@agentage/cli 0.1.19 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +20 -244
- package/dist/cli.js.map +1 -1
- package/dist/commands/agents.d.ts +3 -0
- package/dist/commands/agents.d.ts.map +1 -0
- package/dist/commands/agents.js +45 -0
- package/dist/commands/agents.js.map +1 -0
- package/dist/commands/daemon-cmd.d.ts +3 -0
- package/dist/commands/daemon-cmd.d.ts.map +1 -0
- package/dist/commands/daemon-cmd.js +26 -0
- package/dist/commands/daemon-cmd.js.map +1 -0
- package/dist/commands/login.d.ts +2 -1
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +8 -65
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/logout.d.ts +2 -1
- package/dist/commands/logout.d.ts.map +1 -1
- package/dist/commands/logout.js +7 -26
- package/dist/commands/logout.js.map +1 -1
- package/dist/commands/logs.d.ts +3 -0
- package/dist/commands/logs.d.ts.map +1 -0
- package/dist/commands/logs.js +45 -0
- package/dist/commands/logs.js.map +1 -0
- package/dist/commands/machines.d.ts +3 -0
- package/dist/commands/machines.d.ts.map +1 -0
- package/dist/commands/machines.js +14 -0
- package/dist/commands/machines.js.map +1 -0
- package/dist/commands/run.d.ts +2 -1
- package/dist/commands/run.d.ts.map +1 -1
- package/dist/commands/run.js +70 -24
- package/dist/commands/run.js.map +1 -1
- package/dist/commands/runs.d.ts +3 -0
- package/dist/commands/runs.d.ts.map +1 -0
- package/dist/commands/runs.js +73 -0
- package/dist/commands/runs.js.map +1 -0
- package/dist/commands/status.d.ts +3 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +34 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/daemon/config.d.ts +32 -0
- package/dist/daemon/config.d.ts.map +1 -0
- package/dist/daemon/config.js +57 -0
- package/dist/daemon/config.js.map +1 -0
- package/dist/daemon/daemon.d.ts +8 -0
- package/dist/daemon/daemon.d.ts.map +1 -0
- package/dist/daemon/daemon.js +106 -0
- package/dist/daemon/daemon.js.map +1 -0
- package/dist/daemon/logger.d.ts +10 -0
- package/dist/daemon/logger.d.ts.map +1 -0
- package/dist/daemon/logger.js +41 -0
- package/dist/daemon/logger.js.map +1 -0
- package/dist/daemon/routes.d.ts +7 -0
- package/dist/daemon/routes.d.ts.map +1 -0
- package/dist/daemon/routes.js +102 -0
- package/dist/daemon/routes.js.map +1 -0
- package/dist/daemon/run-manager.d.ts +13 -0
- package/dist/daemon/run-manager.d.ts.map +1 -0
- package/dist/daemon/run-manager.js +119 -0
- package/dist/daemon/run-manager.js.map +1 -0
- package/dist/daemon/server.d.ts +11 -0
- package/dist/daemon/server.d.ts.map +1 -0
- package/dist/daemon/server.js +59 -0
- package/dist/daemon/server.js.map +1 -0
- package/dist/daemon/websocket.d.ts +4 -0
- package/dist/daemon/websocket.d.ts.map +1 -0
- package/dist/daemon/websocket.js +88 -0
- package/dist/daemon/websocket.js.map +1 -0
- package/dist/daemon-entry.d.ts +2 -0
- package/dist/daemon-entry.d.ts.map +1 -0
- package/dist/daemon-entry.js +45 -0
- package/dist/daemon-entry.js.map +1 -0
- package/dist/discovery/code-factory.d.ts +3 -0
- package/dist/discovery/code-factory.d.ts.map +1 -0
- package/dist/discovery/code-factory.js +32 -0
- package/dist/discovery/code-factory.js.map +1 -0
- package/dist/discovery/markdown-factory.d.ts +3 -0
- package/dist/discovery/markdown-factory.d.ts.map +1 -0
- package/dist/discovery/markdown-factory.js +63 -0
- package/dist/discovery/markdown-factory.js.map +1 -0
- package/dist/discovery/scanner.d.ts +3 -0
- package/dist/discovery/scanner.d.ts.map +1 -0
- package/dist/discovery/scanner.js +50 -0
- package/dist/discovery/scanner.js.map +1 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -8
- package/dist/index.js.map +1 -1
- package/dist/utils/daemon-client.d.ts +5 -0
- package/dist/utils/daemon-client.d.ts.map +1 -0
- package/dist/utils/daemon-client.js +44 -0
- package/dist/utils/daemon-client.js.map +1 -0
- package/dist/utils/ensure-daemon.d.ts +2 -0
- package/dist/utils/ensure-daemon.d.ts.map +1 -0
- package/dist/utils/ensure-daemon.js +7 -0
- package/dist/utils/ensure-daemon.js.map +1 -0
- package/dist/utils/render.d.ts +3 -0
- package/dist/utils/render.d.ts.map +1 -0
- package/dist/utils/render.js +84 -0
- package/dist/utils/render.js.map +1 -0
- package/package.json +44 -54
- package/.github/copilot-instructions.md +0 -126
- package/.github/dependabot.yml +0 -41
- package/.github/workflows/ci.yml +0 -50
- package/.github/workflows/publish.yml +0 -170
- package/dist/cli.test.d.ts +0 -2
- package/dist/cli.test.d.ts.map +0 -1
- package/dist/cli.test.js +0 -67
- package/dist/cli.test.js.map +0 -1
- package/dist/commands/init.d.ts +0 -8
- package/dist/commands/init.d.ts.map +0 -1
- package/dist/commands/init.js +0 -39
- package/dist/commands/init.js.map +0 -1
- package/dist/commands/init.test.d.ts +0 -2
- package/dist/commands/init.test.d.ts.map +0 -1
- package/dist/commands/init.test.js +0 -79
- package/dist/commands/init.test.js.map +0 -1
- package/dist/commands/install.d.ts +0 -8
- package/dist/commands/install.d.ts.map +0 -1
- package/dist/commands/install.js +0 -90
- package/dist/commands/install.js.map +0 -1
- package/dist/commands/install.test.d.ts +0 -2
- package/dist/commands/install.test.d.ts.map +0 -1
- package/dist/commands/install.test.js +0 -172
- package/dist/commands/install.test.js.map +0 -1
- package/dist/commands/list.d.ts +0 -2
- package/dist/commands/list.d.ts.map +0 -1
- package/dist/commands/list.js +0 -145
- package/dist/commands/list.js.map +0 -1
- package/dist/commands/list.test.d.ts +0 -2
- package/dist/commands/list.test.d.ts.map +0 -1
- package/dist/commands/list.test.js +0 -120
- package/dist/commands/list.test.js.map +0 -1
- package/dist/commands/login.test.d.ts +0 -2
- package/dist/commands/login.test.d.ts.map +0 -1
- package/dist/commands/login.test.js +0 -157
- package/dist/commands/login.test.js.map +0 -1
- package/dist/commands/logout.test.d.ts +0 -2
- package/dist/commands/logout.test.d.ts.map +0 -1
- package/dist/commands/logout.test.js +0 -49
- package/dist/commands/logout.test.js.map +0 -1
- package/dist/commands/publish.d.ts +0 -10
- package/dist/commands/publish.d.ts.map +0 -1
- package/dist/commands/publish.js +0 -138
- package/dist/commands/publish.js.map +0 -1
- package/dist/commands/publish.test.d.ts +0 -2
- package/dist/commands/publish.test.d.ts.map +0 -1
- package/dist/commands/publish.test.js +0 -307
- package/dist/commands/publish.test.js.map +0 -1
- package/dist/commands/run.test.d.ts +0 -2
- package/dist/commands/run.test.d.ts.map +0 -1
- package/dist/commands/run.test.js +0 -73
- package/dist/commands/run.test.js.map +0 -1
- package/dist/commands/search.d.ts +0 -8
- package/dist/commands/search.d.ts.map +0 -1
- package/dist/commands/search.js +0 -41
- package/dist/commands/search.js.map +0 -1
- package/dist/commands/search.test.d.ts +0 -2
- package/dist/commands/search.test.d.ts.map +0 -1
- package/dist/commands/search.test.js +0 -138
- package/dist/commands/search.test.js.map +0 -1
- package/dist/commands/update.d.ts +0 -8
- package/dist/commands/update.d.ts.map +0 -1
- package/dist/commands/update.js +0 -28
- package/dist/commands/update.js.map +0 -1
- package/dist/commands/update.test.d.ts +0 -2
- package/dist/commands/update.test.d.ts.map +0 -1
- package/dist/commands/update.test.js +0 -134
- package/dist/commands/update.test.js.map +0 -1
- package/dist/commands/whoami.d.ts +0 -2
- package/dist/commands/whoami.d.ts.map +0 -1
- package/dist/commands/whoami.js +0 -55
- package/dist/commands/whoami.js.map +0 -1
- package/dist/commands/whoami.test.d.ts +0 -2
- package/dist/commands/whoami.test.d.ts.map +0 -1
- package/dist/commands/whoami.test.js +0 -119
- package/dist/commands/whoami.test.js.map +0 -1
- package/dist/index.test.d.ts +0 -2
- package/dist/index.test.d.ts.map +0 -1
- package/dist/index.test.js +0 -17
- package/dist/index.test.js.map +0 -1
- package/dist/schemas/agent.schema.d.ts +0 -22
- package/dist/schemas/agent.schema.d.ts.map +0 -1
- package/dist/schemas/agent.schema.js +0 -9
- package/dist/schemas/agent.schema.js.map +0 -1
- package/dist/schemas/agent.schema.test.d.ts +0 -2
- package/dist/schemas/agent.schema.test.d.ts.map +0 -1
- package/dist/schemas/agent.schema.test.js +0 -80
- package/dist/schemas/agent.schema.test.js.map +0 -1
- package/dist/services/auth.service.d.ts +0 -10
- package/dist/services/auth.service.d.ts.map +0 -1
- package/dist/services/auth.service.js +0 -99
- package/dist/services/auth.service.js.map +0 -1
- package/dist/services/auth.service.test.d.ts +0 -2
- package/dist/services/auth.service.test.d.ts.map +0 -1
- package/dist/services/auth.service.test.js +0 -218
- package/dist/services/auth.service.test.js.map +0 -1
- package/dist/services/registry.service.d.ts +0 -13
- package/dist/services/registry.service.d.ts.map +0 -1
- package/dist/services/registry.service.js +0 -74
- package/dist/services/registry.service.js.map +0 -1
- package/dist/services/registry.service.test.d.ts +0 -2
- package/dist/services/registry.service.test.d.ts.map +0 -1
- package/dist/services/registry.service.test.js +0 -222
- package/dist/services/registry.service.test.js.map +0 -1
- package/dist/types/config.types.d.ts +0 -177
- package/dist/types/config.types.d.ts.map +0 -1
- package/dist/types/config.types.js +0 -22
- package/dist/types/config.types.js.map +0 -1
- package/dist/types/lockfile.types.d.ts +0 -1
- package/dist/types/lockfile.types.d.ts.map +0 -1
- package/dist/types/lockfile.types.js +0 -2
- package/dist/types/lockfile.types.js.map +0 -1
- package/dist/types/registry.types.d.ts +0 -65
- package/dist/types/registry.types.d.ts.map +0 -1
- package/dist/types/registry.types.js +0 -2
- package/dist/types/registry.types.js.map +0 -1
- package/dist/utils/agent-parser.d.ts +0 -26
- package/dist/utils/agent-parser.d.ts.map +0 -1
- package/dist/utils/agent-parser.js +0 -45
- package/dist/utils/agent-parser.js.map +0 -1
- package/dist/utils/agent-parser.test.d.ts +0 -2
- package/dist/utils/agent-parser.test.d.ts.map +0 -1
- package/dist/utils/agent-parser.test.js +0 -102
- package/dist/utils/agent-parser.test.js.map +0 -1
- package/dist/utils/config.d.ts +0 -21
- package/dist/utils/config.d.ts.map +0 -1
- package/dist/utils/config.js +0 -99
- package/dist/utils/config.js.map +0 -1
- package/dist/utils/config.test.d.ts +0 -2
- package/dist/utils/config.test.d.ts.map +0 -1
- package/dist/utils/config.test.js +0 -214
- package/dist/utils/config.test.js.map +0 -1
- package/dist/utils/lockfile.d.ts +0 -1
- package/dist/utils/lockfile.d.ts.map +0 -1
- package/dist/utils/lockfile.js +0 -2
- package/dist/utils/lockfile.js.map +0 -1
- package/dist/utils/lockfile.test.d.ts +0 -1
- package/dist/utils/lockfile.test.d.ts.map +0 -1
- package/dist/utils/lockfile.test.js +0 -7
- package/dist/utils/lockfile.test.js.map +0 -1
- package/dist/utils/version.d.ts +0 -10
- package/dist/utils/version.d.ts.map +0 -1
- package/dist/utils/version.js +0 -33
- package/dist/utils/version.js.map +0 -1
- package/dist/utils/version.test.d.ts +0 -2
- package/dist/utils/version.test.d.ts.map +0 -1
- package/dist/utils/version.test.js +0 -30
- package/dist/utils/version.test.js.map +0 -1
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { existsSync, readdirSync } from 'node:fs';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
import { logDebug, logInfo, logWarn } from '../daemon/logger.js';
|
|
4
|
+
const getAllFiles = (dir) => {
|
|
5
|
+
const results = [];
|
|
6
|
+
if (!existsSync(dir)) {
|
|
7
|
+
logWarn(`Discovery dir does not exist: ${dir}`);
|
|
8
|
+
return results;
|
|
9
|
+
}
|
|
10
|
+
const entries = readdirSync(dir, { withFileTypes: true });
|
|
11
|
+
for (const entry of entries) {
|
|
12
|
+
const fullPath = join(dir, entry.name);
|
|
13
|
+
if (entry.isDirectory()) {
|
|
14
|
+
results.push(...getAllFiles(fullPath));
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
results.push(fullPath);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
return results;
|
|
21
|
+
};
|
|
22
|
+
export const scanAgents = async (dirs, factories) => {
|
|
23
|
+
const agents = [];
|
|
24
|
+
const seen = new Set();
|
|
25
|
+
for (const dir of dirs) {
|
|
26
|
+
const expandedDir = dir.replace(/^~/, process.env['HOME'] || '~');
|
|
27
|
+
logDebug(`Scanning directory: ${expandedDir}`);
|
|
28
|
+
const files = getAllFiles(expandedDir);
|
|
29
|
+
for (const file of files) {
|
|
30
|
+
for (const factory of factories) {
|
|
31
|
+
try {
|
|
32
|
+
const agent = await factory(file);
|
|
33
|
+
if (agent && !seen.has(agent.manifest.name)) {
|
|
34
|
+
agents.push(agent);
|
|
35
|
+
seen.add(agent.manifest.name);
|
|
36
|
+
logDebug(`Discovered agent: ${agent.manifest.name} from ${file}`);
|
|
37
|
+
break;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
catch (err) {
|
|
41
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
42
|
+
logWarn(`Factory error on ${file}: ${message}`);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
logInfo(`Scan complete: ${agents.length} agent(s) found`);
|
|
48
|
+
return agents;
|
|
49
|
+
};
|
|
50
|
+
//# sourceMappingURL=scanner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scanner.js","sourceRoot":"","sources":["../../src/discovery/scanner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAEjE,MAAM,WAAW,GAAG,CAAC,GAAW,EAAY,EAAE;IAC5C,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACrB,OAAO,CAAC,iCAAiC,GAAG,EAAE,CAAC,CAAC;QAChD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,OAAO,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC;QACzC,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,EAAE,IAAc,EAAE,SAAyB,EAAoB,EAAE;IAC9F,MAAM,MAAM,GAAY,EAAE,CAAC;IAC3B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAE/B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;QAClE,QAAQ,CAAC,uBAAuB,WAAW,EAAE,CAAC,CAAC;QAC/C,MAAM,KAAK,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC;QAEvC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,KAAK,MAAM,OAAO,IAAI,SAAS,EAAE,CAAC;gBAChC,IAAI,CAAC;oBACH,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;oBAClC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;wBAC5C,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;wBACnB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;wBAC9B,QAAQ,CAAC,qBAAqB,KAAK,CAAC,QAAQ,CAAC,IAAI,SAAS,IAAI,EAAE,CAAC,CAAC;wBAClE,MAAM;oBACR,CAAC;gBACH,CAAC;gBAAC,OAAO,GAAY,EAAE,CAAC;oBACtB,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBACjE,OAAO,CAAC,oBAAoB,IAAI,KAAK,OAAO,EAAE,CAAC,CAAC;gBAClD,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,CAAC,kBAAkB,MAAM,CAAC,MAAM,iBAAiB,CAAC,CAAC;IAC1D,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export
|
|
2
|
-
export
|
|
1
|
+
export { loadConfig, saveConfig, getConfigDir } from './daemon/config.js';
|
|
2
|
+
export type { DaemonConfig, SyncEvents } from './daemon/config.js';
|
|
3
3
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC1E,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,9 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
import { dirname, join } from 'path';
|
|
3
|
-
import { fileURLToPath } from 'url';
|
|
4
|
-
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
5
|
-
const packageJsonPath = join(__dirname, '..', 'package.json');
|
|
6
|
-
const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf-8'));
|
|
7
|
-
export const version = packageJson.version;
|
|
8
|
-
export const greet = () => 'Hello from AgentKit CLI!';
|
|
1
|
+
export { loadConfig, saveConfig, getConfigDir } from './daemon/config.js';
|
|
9
2
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { WebSocket } from 'ws';
|
|
2
|
+
export declare const get: <T>(path: string) => Promise<T>;
|
|
3
|
+
export declare const post: <T>(path: string, body?: unknown) => Promise<T>;
|
|
4
|
+
export declare const connectWs: (onMessage: (data: unknown) => void) => WebSocket;
|
|
5
|
+
//# sourceMappingURL=daemon-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"daemon-client.d.ts","sourceRoot":"","sources":["../../src/utils/daemon-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAa/B,eAAO,MAAM,GAAG,GAAU,CAAC,EAAE,MAAM,MAAM,KAAG,OAAO,CAAC,CAAC,CAOpD,CAAC;AAEF,eAAO,MAAM,IAAI,GAAU,CAAC,EAAE,MAAM,MAAM,EAAE,OAAO,OAAO,KAAG,OAAO,CAAC,CAAC,CAWrE,CAAC;AAEF,eAAO,MAAM,SAAS,GAAI,WAAW,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,KAAG,SAW9D,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { WebSocket } from 'ws';
|
|
2
|
+
import { loadConfig } from '../daemon/config.js';
|
|
3
|
+
const getBaseUrl = () => {
|
|
4
|
+
const config = loadConfig();
|
|
5
|
+
return `http://localhost:${config.daemon.port}`;
|
|
6
|
+
};
|
|
7
|
+
const getWsUrl = () => {
|
|
8
|
+
const config = loadConfig();
|
|
9
|
+
return `ws://localhost:${config.daemon.port}/ws`;
|
|
10
|
+
};
|
|
11
|
+
export const get = async (path) => {
|
|
12
|
+
const response = await fetch(`${getBaseUrl()}${path}`);
|
|
13
|
+
if (!response.ok) {
|
|
14
|
+
const body = (await response.json().catch(() => ({})));
|
|
15
|
+
throw new Error(body.error || `Request failed: ${response.status}`);
|
|
16
|
+
}
|
|
17
|
+
return response.json();
|
|
18
|
+
};
|
|
19
|
+
export const post = async (path, body) => {
|
|
20
|
+
const response = await fetch(`${getBaseUrl()}${path}`, {
|
|
21
|
+
method: 'POST',
|
|
22
|
+
headers: { 'Content-Type': 'application/json' },
|
|
23
|
+
body: body ? JSON.stringify(body) : undefined,
|
|
24
|
+
});
|
|
25
|
+
if (!response.ok) {
|
|
26
|
+
const data = (await response.json().catch(() => ({})));
|
|
27
|
+
throw new Error(data.error || `Request failed: ${response.status}`);
|
|
28
|
+
}
|
|
29
|
+
return response.json();
|
|
30
|
+
};
|
|
31
|
+
export const connectWs = (onMessage) => {
|
|
32
|
+
const ws = new WebSocket(getWsUrl());
|
|
33
|
+
ws.on('message', (raw) => {
|
|
34
|
+
try {
|
|
35
|
+
const data = JSON.parse(String(raw));
|
|
36
|
+
onMessage(data);
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
// Ignore malformed messages
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
return ws;
|
|
43
|
+
};
|
|
44
|
+
//# sourceMappingURL=daemon-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"daemon-client.js","sourceRoot":"","sources":["../../src/utils/daemon-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,MAAM,UAAU,GAAG,GAAW,EAAE;IAC9B,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,OAAO,oBAAoB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;AAClD,CAAC,CAAC;AAEF,MAAM,QAAQ,GAAG,GAAW,EAAE;IAC5B,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,OAAO,kBAAkB,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC;AACnD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,GAAG,GAAG,KAAK,EAAK,IAAY,EAAc,EAAE;IACvD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,UAAU,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;IACvD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAuB,CAAC;QAC7E,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,mBAAmB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IACtE,CAAC;IACD,OAAO,QAAQ,CAAC,IAAI,EAAgB,CAAC;AACvC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,IAAI,GAAG,KAAK,EAAK,IAAY,EAAE,IAAc,EAAc,EAAE;IACxE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,UAAU,EAAE,GAAG,IAAI,EAAE,EAAE;QACrD,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAC/C,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;KAC9C,CAAC,CAAC;IACH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAuB,CAAC;QAC7E,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,mBAAmB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IACtE,CAAC;IACD,OAAO,QAAQ,CAAC,IAAI,EAAgB,CAAC;AACvC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,SAAkC,EAAa,EAAE;IACzE,MAAM,EAAE,GAAG,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;IACrC,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE;QACvB,IAAI,CAAC;YACH,MAAM,IAAI,GAAY,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAC9C,SAAS,CAAC,IAAI,CAAC,CAAC;QAClB,CAAC;QAAC,MAAM,CAAC;YACP,4BAA4B;QAC9B,CAAC;IACH,CAAC,CAAC,CAAC;IACH,OAAO,EAAE,CAAC;AACZ,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ensure-daemon.d.ts","sourceRoot":"","sources":["../../src/utils/ensure-daemon.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,YAAY,QAAa,OAAO,CAAC,IAAI,CAGjD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ensure-daemon.js","sourceRoot":"","sources":["../../src/utils/ensure-daemon.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEnE,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,IAAmB,EAAE;IACpD,IAAI,eAAe,EAAE;QAAE,OAAO;IAC9B,MAAM,WAAW,EAAE,CAAC;AACtB,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/utils/render.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C,eAAO,MAAM,WAAW,GAAI,OAAO,QAAQ,KAAG,IAqC7C,CAAC"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
export const renderEvent = (event) => {
|
|
3
|
+
const { data } = event;
|
|
4
|
+
if (data.type === 'output') {
|
|
5
|
+
renderOutput(data.content, data.format);
|
|
6
|
+
return;
|
|
7
|
+
}
|
|
8
|
+
if (data.type === 'state') {
|
|
9
|
+
if (data.state === 'completed') {
|
|
10
|
+
console.log(chalk.green('\nDone.'));
|
|
11
|
+
}
|
|
12
|
+
else if (data.state === 'failed') {
|
|
13
|
+
console.log(chalk.red(`\nFailed: ${data.message || 'Unknown error'}`));
|
|
14
|
+
}
|
|
15
|
+
else if (data.state === 'input_required') {
|
|
16
|
+
console.log(chalk.yellow('\nInput required.'));
|
|
17
|
+
}
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
if (data.type === 'error') {
|
|
21
|
+
console.error(chalk.red(`Error [${data.code}]: ${data.message}`));
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
if (data.type === 'input_required') {
|
|
25
|
+
console.log(chalk.yellow(`\n${data.prompt}`));
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
if (data.type === 'result') {
|
|
29
|
+
if (data.output) {
|
|
30
|
+
console.log(typeof data.output === 'string' ? data.output : JSON.stringify(data.output, null, 2));
|
|
31
|
+
}
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
const renderOutput = (content, format) => {
|
|
36
|
+
if (!format || format === 'text' || format === 'markdown') {
|
|
37
|
+
console.log(typeof content === 'string' ? content : JSON.stringify(content));
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
if (format === 'llm.delta') {
|
|
41
|
+
const delta = content;
|
|
42
|
+
if (delta.text) {
|
|
43
|
+
process.stdout.write(delta.text);
|
|
44
|
+
}
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
if (format === 'llm.thinking') {
|
|
48
|
+
const thinking = content;
|
|
49
|
+
if (thinking.text) {
|
|
50
|
+
process.stdout.write(chalk.dim(thinking.text));
|
|
51
|
+
}
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
if (format === 'llm.tool_call') {
|
|
55
|
+
const call = content;
|
|
56
|
+
console.log(chalk.cyan(`> tool: ${call.name}(${JSON.stringify(call.input)})`));
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
if (format === 'llm.tool_result') {
|
|
60
|
+
const result = content;
|
|
61
|
+
const text = typeof result.output === 'string' ? result.output : JSON.stringify(result.output);
|
|
62
|
+
const truncated = text.length > 200 ? text.slice(0, 200) + '...' : text;
|
|
63
|
+
console.log(chalk.gray(`< result: ${truncated}`));
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
if (format === 'llm.usage') {
|
|
67
|
+
const usage = content;
|
|
68
|
+
console.log(chalk.gray(`Tokens: ${(usage.input ?? 0).toLocaleString()} in / ${(usage.output ?? 0).toLocaleString()} out`));
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
if (format === 'progress') {
|
|
72
|
+
const progress = content;
|
|
73
|
+
const pct = progress.percent !== undefined ? `[${progress.percent}%] ` : '';
|
|
74
|
+
console.log(`${pct}${progress.message || ''}`);
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
if (format === 'json') {
|
|
78
|
+
console.log(JSON.stringify(content, null, 2));
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
// Unknown format
|
|
82
|
+
console.log(JSON.stringify(content));
|
|
83
|
+
};
|
|
84
|
+
//# sourceMappingURL=render.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/utils/render.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,69 +1,59 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agentage/cli",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "CLI
|
|
3
|
+
"version": "0.2.0",
|
|
4
|
+
"description": "Agentage CLI and daemon — control plane for AI agents",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
7
7
|
"bin": {
|
|
8
|
-
"
|
|
9
|
-
|
|
8
|
+
"agentage": "./dist/cli.js"
|
|
9
|
+
},
|
|
10
|
+
"files": ["dist"],
|
|
11
|
+
"engines": {
|
|
12
|
+
"node": ">=22.0.0",
|
|
13
|
+
"npm": ">=10.0.0"
|
|
10
14
|
},
|
|
11
15
|
"scripts": {
|
|
12
|
-
"
|
|
13
|
-
"build": "tsc",
|
|
16
|
+
"build": "tsc -p tsconfig.build.json",
|
|
14
17
|
"type-check": "tsc --noEmit",
|
|
15
|
-
"lint": "eslint src
|
|
16
|
-
"lint:fix": "eslint src --
|
|
17
|
-
"
|
|
18
|
-
"
|
|
19
|
-
"test
|
|
20
|
-
"
|
|
21
|
-
"
|
|
18
|
+
"lint": "eslint src",
|
|
19
|
+
"lint:fix": "eslint src --fix",
|
|
20
|
+
"format": "prettier --write \"src/**/*.ts\"",
|
|
21
|
+
"format:check": "prettier --check \"src/**/*.ts\"",
|
|
22
|
+
"test": "vitest run",
|
|
23
|
+
"test:watch": "vitest",
|
|
24
|
+
"test:coverage": "vitest run --coverage",
|
|
25
|
+
"clean": "rm -rf dist *.tsbuildinfo coverage",
|
|
26
|
+
"verify": "npm run type-check && npm run lint && npm run format:check && npm run test && npm run build",
|
|
22
27
|
"prepublishOnly": "npm run verify"
|
|
23
28
|
},
|
|
24
|
-
"
|
|
25
|
-
"
|
|
26
|
-
"
|
|
27
|
-
"
|
|
28
|
-
"
|
|
29
|
-
"
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
29
|
+
"dependencies": {
|
|
30
|
+
"@agentage/core": "^0.2.0",
|
|
31
|
+
"@agentage/platform": "^0.2.0",
|
|
32
|
+
"chalk": "latest",
|
|
33
|
+
"commander": "latest",
|
|
34
|
+
"express": "latest",
|
|
35
|
+
"gray-matter": "latest",
|
|
36
|
+
"jiti": "latest",
|
|
37
|
+
"open": "latest",
|
|
38
|
+
"ws": "latest"
|
|
39
|
+
},
|
|
40
|
+
"devDependencies": {
|
|
41
|
+
"@types/express": "latest",
|
|
42
|
+
"@types/node": "latest",
|
|
43
|
+
"@types/ws": "latest",
|
|
44
|
+
"@typescript-eslint/eslint-plugin": "latest",
|
|
45
|
+
"@typescript-eslint/parser": "latest",
|
|
46
|
+
"eslint": "latest",
|
|
47
|
+
"eslint-config-prettier": "latest",
|
|
48
|
+
"eslint-plugin-prettier": "latest",
|
|
49
|
+
"prettier": "latest",
|
|
50
|
+
"typescript": "latest",
|
|
51
|
+
"vitest": "latest",
|
|
52
|
+
"@vitest/coverage-v8": "latest"
|
|
53
|
+
},
|
|
33
54
|
"repository": {
|
|
34
55
|
"type": "git",
|
|
35
56
|
"url": "https://github.com/agentage/cli.git"
|
|
36
57
|
},
|
|
37
|
-
"
|
|
38
|
-
"url": "https://github.com/agentage/cli/issues"
|
|
39
|
-
},
|
|
40
|
-
"homepage": "https://github.com/agentage/cli#readme",
|
|
41
|
-
"engines": {
|
|
42
|
-
"node": ">=20.0.0",
|
|
43
|
-
"npm": ">=10.0.0"
|
|
44
|
-
},
|
|
45
|
-
"dependencies": {
|
|
46
|
-
"chalk": "^5.6.2",
|
|
47
|
-
"commander": "^14.0.2",
|
|
48
|
-
"gray-matter": "^4.0.3",
|
|
49
|
-
"inquirer": "^13.0.1",
|
|
50
|
-
"js-yaml": "^4.1.0",
|
|
51
|
-
"node-machine-id": "1.1.12",
|
|
52
|
-
"open": "^11.0.0",
|
|
53
|
-
"yaml": "^2.8.1",
|
|
54
|
-
"zod": "3.25.76"
|
|
55
|
-
},
|
|
56
|
-
"devDependencies": {
|
|
57
|
-
"@types/inquirer": "^9.0.9",
|
|
58
|
-
"@types/jest": "^30.0.0",
|
|
59
|
-
"@types/js-yaml": "^4.0.9",
|
|
60
|
-
"@types/node": "^22.8.6",
|
|
61
|
-
"@typescript-eslint/eslint-plugin": "^8.46.3",
|
|
62
|
-
"@typescript-eslint/parser": "^8.46.3",
|
|
63
|
-
"eslint": "^9.39.1",
|
|
64
|
-
"jest": "^30.2.0",
|
|
65
|
-
"ts-jest": "^29.4.5",
|
|
66
|
-
"tsx": "^4.20.6",
|
|
67
|
-
"typescript": "^5.9.3"
|
|
68
|
-
}
|
|
58
|
+
"license": "MIT"
|
|
69
59
|
}
|
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
# AgentKit CLI - Development Instructions
|
|
2
|
-
|
|
3
|
-
## **Project Overview**
|
|
4
|
-
|
|
5
|
-
- CLI tool for creating and running AI agents locally
|
|
6
|
-
- TypeScript-based command-line interface
|
|
7
|
-
- Commands: init, install, list, login, logout, publish, run, search, update, whoami
|
|
8
|
-
- Published as `@agentage/cli` package
|
|
9
|
-
|
|
10
|
-
## **Project Agreements**
|
|
11
|
-
|
|
12
|
-
- Default branch: `master`
|
|
13
|
-
- Repository: `agentage/cli`
|
|
14
|
-
- Branch names: `feature/*`, `bugfix/*`, `hotfix/*`, `setup-*`
|
|
15
|
-
- Commits: `feat:`, `fix:`, `chore:` (max 72 chars)
|
|
16
|
-
- Verifications: `npm run verify` (type-check + lint + build + test)
|
|
17
|
-
|
|
18
|
-
## **Publishing**
|
|
19
|
-
|
|
20
|
-
- Published to npm as `@agentage/cli`
|
|
21
|
-
- Auto-publish on push to `master` when `package.json` version is bumped.
|
|
22
|
-
|
|
23
|
-
## **Release Strategy**
|
|
24
|
-
|
|
25
|
-
- 🎯 **MINIMAL FIRST**: Keep commands simple and focused
|
|
26
|
-
- 🚫 **No Over-Engineering**: Single responsibility per command
|
|
27
|
-
- ⚡ **Essential Only**: Core CLI functionality
|
|
28
|
-
|
|
29
|
-
## **Rules**
|
|
30
|
-
|
|
31
|
-
- 📊 Use icons/tables for structured output
|
|
32
|
-
- 📁 NO extra docs unless explicitly asked
|
|
33
|
-
- 🐙 GitHub: owner `agentage`, repo `cli`
|
|
34
|
-
- ⚡ Prefer function calls over terminal commands
|
|
35
|
-
- 📂 Source code in `src/` directory
|
|
36
|
-
|
|
37
|
-
## **Coding Standards**
|
|
38
|
-
|
|
39
|
-
### TypeScript
|
|
40
|
-
|
|
41
|
-
- 🚫 No `any` type - explicit types always
|
|
42
|
-
- 📤 Named exports only (no default exports)
|
|
43
|
-
- 📏 Files <300 lines, commands <200 lines
|
|
44
|
-
- 🔄 Functional: arrow functions, async/await, destructuring
|
|
45
|
-
- 🏗️ Interfaces over classes
|
|
46
|
-
- ✅ ESM modules (`type: "module"`)
|
|
47
|
-
|
|
48
|
-
### Naming
|
|
49
|
-
|
|
50
|
-
- **Interfaces**: `AgentConfig`, `RegistryAgent`, `LockfileEntry`
|
|
51
|
-
- **Types**: `CommandOptions`, `ServiceConfig`
|
|
52
|
-
- **Files**: `command.ts`, `service.ts`, `*.types.ts`, `*.test.ts`
|
|
53
|
-
|
|
54
|
-
## **Tech Stack**
|
|
55
|
-
|
|
56
|
-
- **Language**: TypeScript 5.3+ (strict mode)
|
|
57
|
-
- **Module**: ESNext with ESM
|
|
58
|
-
- **Testing**: Jest 30+ with ts-jest
|
|
59
|
-
- **Linting**: ESLint 9+ (flat config)
|
|
60
|
-
- **Formatting**: Prettier
|
|
61
|
-
- **Package Manager**: npm (workspaces)
|
|
62
|
-
|
|
63
|
-
## **Node Requirements**
|
|
64
|
-
|
|
65
|
-
- Node.js >= 20.0.0
|
|
66
|
-
- npm >= 10.0.0
|
|
67
|
-
|
|
68
|
-
## **CLI Patterns**
|
|
69
|
-
|
|
70
|
-
**Command Structure**:
|
|
71
|
-
|
|
72
|
-
```typescript
|
|
73
|
-
import { Command } from "commander";
|
|
74
|
-
|
|
75
|
-
export const myCommand = new Command("name")
|
|
76
|
-
.description("Command description")
|
|
77
|
-
.option("-o, --option <value>", "Option description")
|
|
78
|
-
.action(async (options) => {
|
|
79
|
-
// Implementation
|
|
80
|
-
});
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
**Service Pattern**:
|
|
84
|
-
|
|
85
|
-
```typescript
|
|
86
|
-
export const myService = {
|
|
87
|
-
async doSomething(): Promise<Result> {
|
|
88
|
-
// Implementation
|
|
89
|
-
},
|
|
90
|
-
};
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
## **Workspace Structure**
|
|
94
|
-
|
|
95
|
-
```
|
|
96
|
-
src/
|
|
97
|
-
cli.ts # Main CLI entry point
|
|
98
|
-
index.ts # Package exports
|
|
99
|
-
commands/ # CLI commands (init, run, install, etc.)
|
|
100
|
-
services/ # Business logic (auth, registry)
|
|
101
|
-
schemas/ # Zod validation schemas
|
|
102
|
-
types/ # TypeScript type definitions
|
|
103
|
-
utils/ # Utility functions
|
|
104
|
-
```
|
|
105
|
-
|
|
106
|
-
## **Scripts**
|
|
107
|
-
|
|
108
|
-
All packages support:
|
|
109
|
-
|
|
110
|
-
- `npm run build` - Build TypeScript
|
|
111
|
-
- `npm run type-check` - TypeScript validation
|
|
112
|
-
- `npm run lint` - ESLint check
|
|
113
|
-
- `npm run lint:fix` - Auto-fix linting
|
|
114
|
-
- `npm run test` - Run Jest tests
|
|
115
|
-
- `npm run test:watch` - Watch mode
|
|
116
|
-
- `npm run test:coverage` - Coverage report
|
|
117
|
-
- `npm run verify` - All checks
|
|
118
|
-
- `npm run clean` - Clean build artifacts
|
|
119
|
-
|
|
120
|
-
## **Quality Gates**
|
|
121
|
-
|
|
122
|
-
- ✅ Type check must pass
|
|
123
|
-
- ✅ Linting must pass (no warnings)
|
|
124
|
-
- ✅ All tests must pass
|
|
125
|
-
- ✅ Coverage >= 70% (branches, functions, lines, statements)
|
|
126
|
-
- ✅ Build must succeed
|
package/.github/dependabot.yml
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
version: 2
|
|
2
|
-
updates:
|
|
3
|
-
# Enable version updates for npm
|
|
4
|
-
- package-ecosystem: "npm"
|
|
5
|
-
directory: "/"
|
|
6
|
-
schedule:
|
|
7
|
-
interval: "weekly"
|
|
8
|
-
day: "monday"
|
|
9
|
-
open-pull-requests-limit: 10
|
|
10
|
-
groups:
|
|
11
|
-
typescript:
|
|
12
|
-
patterns:
|
|
13
|
-
- "typescript"
|
|
14
|
-
- "@typescript-eslint/*"
|
|
15
|
-
- "ts-jest"
|
|
16
|
-
- "tsx"
|
|
17
|
-
testing:
|
|
18
|
-
patterns:
|
|
19
|
-
- "jest"
|
|
20
|
-
- "@jest/*"
|
|
21
|
-
- "@types/jest"
|
|
22
|
-
linting:
|
|
23
|
-
patterns:
|
|
24
|
-
- "eslint"
|
|
25
|
-
- "eslint-*"
|
|
26
|
-
all-patch:
|
|
27
|
-
update-types:
|
|
28
|
-
- "patch"
|
|
29
|
-
labels:
|
|
30
|
-
- "dependencies"
|
|
31
|
-
- "automated"
|
|
32
|
-
|
|
33
|
-
# GitHub Actions
|
|
34
|
-
- package-ecosystem: "github-actions"
|
|
35
|
-
directory: "/"
|
|
36
|
-
schedule:
|
|
37
|
-
interval: "weekly"
|
|
38
|
-
day: "monday"
|
|
39
|
-
labels:
|
|
40
|
-
- "dependencies"
|
|
41
|
-
- "github-actions"
|
package/.github/workflows/ci.yml
DELETED
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
name: CI
|
|
2
|
-
|
|
3
|
-
on:
|
|
4
|
-
push:
|
|
5
|
-
branches: [main, master]
|
|
6
|
-
pull_request:
|
|
7
|
-
branches: [main, master]
|
|
8
|
-
|
|
9
|
-
jobs:
|
|
10
|
-
build-and-test:
|
|
11
|
-
runs-on: ubuntu-latest
|
|
12
|
-
|
|
13
|
-
strategy:
|
|
14
|
-
matrix:
|
|
15
|
-
node-version: [20.x, 22.x]
|
|
16
|
-
|
|
17
|
-
steps:
|
|
18
|
-
- uses: actions/checkout@v6
|
|
19
|
-
|
|
20
|
-
- name: Use Node.js ${{ matrix.node-version }}
|
|
21
|
-
uses: actions/setup-node@v4
|
|
22
|
-
with:
|
|
23
|
-
node-version: ${{ matrix.node-version }}
|
|
24
|
-
cache: 'npm'
|
|
25
|
-
|
|
26
|
-
- name: Install dependencies
|
|
27
|
-
run: npm ci
|
|
28
|
-
|
|
29
|
-
- name: Type check
|
|
30
|
-
run: npm run type-check
|
|
31
|
-
|
|
32
|
-
- name: Lint
|
|
33
|
-
run: npm run lint
|
|
34
|
-
|
|
35
|
-
- name: Build
|
|
36
|
-
run: npm run build
|
|
37
|
-
|
|
38
|
-
- name: Test
|
|
39
|
-
run: npm test
|
|
40
|
-
|
|
41
|
-
- name: Test coverage
|
|
42
|
-
run: npm run test:coverage
|
|
43
|
-
|
|
44
|
-
- name: Upload coverage reports
|
|
45
|
-
uses: codecov/codecov-action@v5
|
|
46
|
-
if: matrix.node-version == '20.x'
|
|
47
|
-
with:
|
|
48
|
-
token: ${{ secrets.CODECOV_TOKEN }}
|
|
49
|
-
file: ./coverage/lcov.info
|
|
50
|
-
fail_ci_if_error: false
|