feat: Created packages/daemon workspace package with DaemonConfig/LogLe…

- "packages/daemon/package.json"
- "packages/daemon/tsconfig.json"
- "packages/daemon/src/types.ts"
- "packages/daemon/src/index.ts"

GSD-Task: S01/T01
This commit is contained in:
Lex Christopherson 2026-03-27 13:40:25 -06:00
parent 8e1d523f4e
commit c37eb1a5c3
5 changed files with 125 additions and 0 deletions

22
package-lock.json generated
View file

@ -1750,6 +1750,10 @@
}
}
},
"node_modules/@gsd-build/daemon": {
"resolved": "packages/daemon",
"link": true
},
"node_modules/@gsd-build/engine-darwin-arm64": {
"version": "2.10.5",
"resolved": "https://registry.npmjs.org/@gsd-build/engine-darwin-arm64/-/engine-darwin-arm64-2.10.5.tgz",
@ -9149,6 +9153,24 @@
}
}
},
"packages/daemon": {
"name": "@gsd-build/daemon",
"version": "0.1.0",
"license": "MIT",
"dependencies": {
"yaml": "^2.8.0"
},
"bin": {
"gsd-daemon": "dist/cli.js"
},
"devDependencies": {
"@types/node": "^24.12.0",
"typescript": "^5.4.0"
},
"engines": {
"node": ">=22.0.0"
}
},
"packages/mcp-server": {
"name": "@gsd-build/mcp-server",
"version": "2.52.0",

View file

@ -0,0 +1,44 @@
{
"name": "@gsd-build/daemon",
"version": "0.1.0",
"description": "GSD daemon — background process for project monitoring and Discord integration",
"license": "MIT",
"repository": {
"type": "git",
"url": "https://github.com/gsd-build/gsd-2.git",
"directory": "packages/daemon"
},
"publishConfig": {
"access": "public"
},
"type": "module",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
"exports": {
".": {
"types": "./dist/index.d.ts",
"import": "./dist/index.js"
}
},
"bin": {
"gsd-daemon": "./dist/cli.js"
},
"scripts": {
"build": "tsc",
"test": "node --test dist/daemon.test.js"
},
"dependencies": {
"yaml": "^2.8.0"
},
"devDependencies": {
"@types/node": "^24.12.0",
"typescript": "^5.4.0"
},
"engines": {
"node": ">=22.0.0"
},
"files": [
"dist",
"!dist/**/*.test.*"
]
}

View file

@ -0,0 +1 @@
export type { DaemonConfig, LogLevel, LogEntry } from './types.js';

View file

@ -0,0 +1,34 @@
/**
* Log severity levels, ordered from most to least verbose.
*/
export type LogLevel = 'debug' | 'info' | 'warn' | 'error';
/**
* A single structured log entry written as JSON-lines.
*/
export interface LogEntry {
/** ISO-8601 timestamp */
ts: string;
level: LogLevel;
msg: string;
data?: Record<string, unknown>;
}
/**
* Top-level daemon configuration, loaded from YAML.
*/
export interface DaemonConfig {
discord?: {
token: string;
guild_id: string;
owner_id: string;
};
projects: {
scan_roots: string[];
};
log: {
file: string;
level: LogLevel;
max_size_mb: number;
};
}

View file

@ -0,0 +1,24 @@
{
"compilerOptions": {
"target": "ES2024",
"module": "Node16",
"lib": ["ES2024"],
"strict": true,
"esModuleInterop": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true,
"declaration": true,
"declarationMap": true,
"sourceMap": true,
"inlineSources": true,
"inlineSourceMap": false,
"moduleResolution": "Node16",
"resolveJsonModule": true,
"allowImportingTsExtensions": false,
"types": ["node"],
"outDir": "./dist",
"rootDir": "./src"
},
"include": ["src/**/*.ts"],
"exclude": ["node_modules", "dist", "**/*.d.ts", "src/**/*.d.ts"]
}