@ontologie/cli 0.1.0-preview.1
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/README.md +492 -0
- package/dist/cache/keys.d.ts +11 -0
- package/dist/cache/keys.d.ts.map +1 -0
- package/dist/cache/keys.js +14 -0
- package/dist/cache/keys.js.map +1 -0
- package/dist/cache/store.d.ts +23 -0
- package/dist/cache/store.d.ts.map +1 -0
- package/dist/cache/store.js +160 -0
- package/dist/cache/store.js.map +1 -0
- package/dist/cli-compat.d.ts +6 -0
- package/dist/cli-compat.d.ts.map +1 -0
- package/dist/cli-compat.js +11 -0
- package/dist/cli-compat.js.map +1 -0
- package/dist/cli.d.ts +30 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +119 -0
- package/dist/cli.js.map +1 -0
- package/dist/client.d.ts +7 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +15 -0
- package/dist/client.js.map +1 -0
- package/dist/commands/actions.d.ts +22 -0
- package/dist/commands/actions.d.ts.map +1 -0
- package/dist/commands/actions.js +211 -0
- package/dist/commands/actions.js.map +1 -0
- package/dist/commands/agent-files.d.ts +27 -0
- package/dist/commands/agent-files.d.ts.map +1 -0
- package/dist/commands/agent-files.js +167 -0
- package/dist/commands/agent-files.js.map +1 -0
- package/dist/commands/agent.d.ts +23 -0
- package/dist/commands/agent.d.ts.map +1 -0
- package/dist/commands/agent.js +314 -0
- package/dist/commands/agent.js.map +1 -0
- package/dist/commands/audit.d.ts +11 -0
- package/dist/commands/audit.d.ts.map +1 -0
- package/dist/commands/audit.js +94 -0
- package/dist/commands/audit.js.map +1 -0
- package/dist/commands/cache.d.ts +8 -0
- package/dist/commands/cache.d.ts.map +1 -0
- package/dist/commands/cache.js +40 -0
- package/dist/commands/cache.js.map +1 -0
- package/dist/commands/capabilities.d.ts +56 -0
- package/dist/commands/capabilities.d.ts.map +1 -0
- package/dist/commands/capabilities.js +304 -0
- package/dist/commands/capabilities.js.map +1 -0
- package/dist/commands/check.d.ts +7 -0
- package/dist/commands/check.d.ts.map +1 -0
- package/dist/commands/check.js +16 -0
- package/dist/commands/check.js.map +1 -0
- package/dist/commands/config.d.ts +6 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +133 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/context.d.ts +6 -0
- package/dist/commands/context.d.ts.map +1 -0
- package/dist/commands/context.js +226 -0
- package/dist/commands/context.js.map +1 -0
- package/dist/commands/dev.d.ts +15 -0
- package/dist/commands/dev.d.ts.map +1 -0
- package/dist/commands/dev.js +62 -0
- package/dist/commands/dev.js.map +1 -0
- package/dist/commands/docs-alias.d.ts +14 -0
- package/dist/commands/docs-alias.d.ts.map +1 -0
- package/dist/commands/docs-alias.js +28 -0
- package/dist/commands/docs-alias.js.map +1 -0
- package/dist/commands/docs.d.ts +6 -0
- package/dist/commands/docs.d.ts.map +1 -0
- package/dist/commands/docs.js +67 -0
- package/dist/commands/docs.js.map +1 -0
- package/dist/commands/doctor.d.ts +6 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +161 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/generate.d.ts +7 -0
- package/dist/commands/generate.d.ts.map +1 -0
- package/dist/commands/generate.js +36 -0
- package/dist/commands/generate.js.map +1 -0
- package/dist/commands/graph.d.ts +9 -0
- package/dist/commands/graph.d.ts.map +1 -0
- package/dist/commands/graph.js +149 -0
- package/dist/commands/graph.js.map +1 -0
- package/dist/commands/import.d.ts +19 -0
- package/dist/commands/import.d.ts.map +1 -0
- package/dist/commands/import.js +330 -0
- package/dist/commands/import.js.map +1 -0
- package/dist/commands/index.d.ts +80 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +345 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/init.d.ts +7 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +101 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/instances.d.ts +7 -0
- package/dist/commands/instances.d.ts.map +1 -0
- package/dist/commands/instances.js +418 -0
- package/dist/commands/instances.js.map +1 -0
- package/dist/commands/keys.d.ts +6 -0
- package/dist/commands/keys.d.ts.map +1 -0
- package/dist/commands/keys.js +113 -0
- package/dist/commands/keys.js.map +1 -0
- package/dist/commands/knowledge.d.ts +6 -0
- package/dist/commands/knowledge.d.ts.map +1 -0
- package/dist/commands/knowledge.js +76 -0
- package/dist/commands/knowledge.js.map +1 -0
- package/dist/commands/model.d.ts +3 -0
- package/dist/commands/model.d.ts.map +1 -0
- package/dist/commands/model.js +40 -0
- package/dist/commands/model.js.map +1 -0
- package/dist/commands/nodes.d.ts +6 -0
- package/dist/commands/nodes.d.ts.map +1 -0
- package/dist/commands/nodes.js +111 -0
- package/dist/commands/nodes.js.map +1 -0
- package/dist/commands/openapi.d.ts +7 -0
- package/dist/commands/openapi.d.ts.map +1 -0
- package/dist/commands/openapi.js +17 -0
- package/dist/commands/openapi.js.map +1 -0
- package/dist/commands/plan.d.ts +19 -0
- package/dist/commands/plan.d.ts.map +1 -0
- package/dist/commands/plan.js +563 -0
- package/dist/commands/plan.js.map +1 -0
- package/dist/commands/process.d.ts +3 -0
- package/dist/commands/process.d.ts.map +1 -0
- package/dist/commands/process.js +67 -0
- package/dist/commands/process.js.map +1 -0
- package/dist/commands/query.d.ts +26 -0
- package/dist/commands/query.d.ts.map +1 -0
- package/dist/commands/query.js +253 -0
- package/dist/commands/query.js.map +1 -0
- package/dist/commands/schema.d.ts +24 -0
- package/dist/commands/schema.d.ts.map +1 -0
- package/dist/commands/schema.js +933 -0
- package/dist/commands/schema.js.map +1 -0
- package/dist/commands/search.d.ts +10 -0
- package/dist/commands/search.d.ts.map +1 -0
- package/dist/commands/search.js +74 -0
- package/dist/commands/search.js.map +1 -0
- package/dist/commands/shared.d.ts +32 -0
- package/dist/commands/shared.d.ts.map +1 -0
- package/dist/commands/shared.js +63 -0
- package/dist/commands/shared.js.map +1 -0
- package/dist/commands/usage.d.ts +6 -0
- package/dist/commands/usage.d.ts.map +1 -0
- package/dist/commands/usage.js +86 -0
- package/dist/commands/usage.js.map +1 -0
- package/dist/commands/validators.d.ts +30 -0
- package/dist/commands/validators.d.ts.map +1 -0
- package/dist/commands/validators.js +93 -0
- package/dist/commands/validators.js.map +1 -0
- package/dist/commands/whoami.d.ts +6 -0
- package/dist/commands/whoami.d.ts.map +1 -0
- package/dist/commands/whoami.js +48 -0
- package/dist/commands/whoami.js.map +1 -0
- package/dist/config.d.ts +47 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +127 -0
- package/dist/config.js.map +1 -0
- package/dist/credentials.d.ts +9 -0
- package/dist/credentials.d.ts.map +1 -0
- package/dist/credentials.js +79 -0
- package/dist/credentials.js.map +1 -0
- package/dist/keychain.d.ts +9 -0
- package/dist/keychain.d.ts.map +1 -0
- package/dist/keychain.js +51 -0
- package/dist/keychain.js.map +1 -0
- package/dist/output/csv.d.ts +5 -0
- package/dist/output/csv.d.ts.map +1 -0
- package/dist/output/csv.js +22 -0
- package/dist/output/csv.js.map +1 -0
- package/dist/output/envelope.schema.d.ts +1053 -0
- package/dist/output/envelope.schema.d.ts.map +1 -0
- package/dist/output/envelope.schema.js +256 -0
- package/dist/output/envelope.schema.js.map +1 -0
- package/dist/output/errors.d.ts +58 -0
- package/dist/output/errors.d.ts.map +1 -0
- package/dist/output/errors.js +339 -0
- package/dist/output/errors.js.map +1 -0
- package/dist/output/formatter.d.ts +27 -0
- package/dist/output/formatter.d.ts.map +1 -0
- package/dist/output/formatter.js +80 -0
- package/dist/output/formatter.js.map +1 -0
- package/dist/output/json.d.ts +41 -0
- package/dist/output/json.d.ts.map +1 -0
- package/dist/output/json.js +215 -0
- package/dist/output/json.js.map +1 -0
- package/dist/output/markdown.d.ts +6 -0
- package/dist/output/markdown.d.ts.map +1 -0
- package/dist/output/markdown.js +51 -0
- package/dist/output/markdown.js.map +1 -0
- package/dist/output/meta.d.ts +49 -0
- package/dist/output/meta.d.ts.map +1 -0
- package/dist/output/meta.js +96 -0
- package/dist/output/meta.js.map +1 -0
- package/dist/output/plain.d.ts +6 -0
- package/dist/output/plain.d.ts.map +1 -0
- package/dist/output/plain.js +51 -0
- package/dist/output/plain.js.map +1 -0
- package/dist/output/table.d.ts +5 -0
- package/dist/output/table.d.ts.map +1 -0
- package/dist/output/table.js +54 -0
- package/dist/output/table.js.map +1 -0
- package/dist/output/types.d.ts +54 -0
- package/dist/output/types.d.ts.map +1 -0
- package/dist/output/types.js +80 -0
- package/dist/output/types.js.map +1 -0
- package/dist/output/warnings.d.ts +15 -0
- package/dist/output/warnings.d.ts.map +1 -0
- package/dist/output/warnings.js +46 -0
- package/dist/output/warnings.js.map +1 -0
- package/dist/output/yaml.d.ts +6 -0
- package/dist/output/yaml.d.ts.map +1 -0
- package/dist/output/yaml.js +9 -0
- package/dist/output/yaml.js.map +1 -0
- package/dist/schema/breaking-changes.d.ts +17 -0
- package/dist/schema/breaking-changes.d.ts.map +1 -0
- package/dist/schema/breaking-changes.js +108 -0
- package/dist/schema/breaking-changes.js.map +1 -0
- package/dist/schema/helpers.d.ts +18 -0
- package/dist/schema/helpers.d.ts.map +1 -0
- package/dist/schema/helpers.js +48 -0
- package/dist/schema/helpers.js.map +1 -0
- package/dist/schema/load-schema-file.d.ts +13 -0
- package/dist/schema/load-schema-file.d.ts.map +1 -0
- package/dist/schema/load-schema-file.js +88 -0
- package/dist/schema/load-schema-file.js.map +1 -0
- package/dist/schema/lockfile.d.ts +6 -0
- package/dist/schema/lockfile.d.ts.map +1 -0
- package/dist/schema/lockfile.js +34 -0
- package/dist/schema/lockfile.js.map +1 -0
- package/dist/schema/manifest-client.d.ts +31 -0
- package/dist/schema/manifest-client.d.ts.map +1 -0
- package/dist/schema/manifest-client.js +282 -0
- package/dist/schema/manifest-client.js.map +1 -0
- package/dist/schema/output.d.ts +38 -0
- package/dist/schema/output.d.ts.map +1 -0
- package/dist/schema/output.js +95 -0
- package/dist/schema/output.js.map +1 -0
- package/dist/stdin.d.ts +8 -0
- package/dist/stdin.d.ts.map +1 -0
- package/dist/stdin.js +21 -0
- package/dist/stdin.js.map +1 -0
- package/dist/templates/basic.d.ts +6 -0
- package/dist/templates/basic.d.ts.map +1 -0
- package/dist/templates/basic.js +90 -0
- package/dist/templates/basic.js.map +1 -0
- package/dist/templates/contract-review.d.ts +9 -0
- package/dist/templates/contract-review.d.ts.map +1 -0
- package/dist/templates/contract-review.js +172 -0
- package/dist/templates/contract-review.js.map +1 -0
- package/dist/templates/customer-onboarding.d.ts +9 -0
- package/dist/templates/customer-onboarding.d.ts.map +1 -0
- package/dist/templates/customer-onboarding.js +176 -0
- package/dist/templates/customer-onboarding.js.map +1 -0
- package/dist/templates/index.d.ts +11 -0
- package/dist/templates/index.d.ts.map +1 -0
- package/dist/templates/index.js +16 -0
- package/dist/templates/index.js.map +1 -0
- package/dist/templates/react-dashboard.d.ts +6 -0
- package/dist/templates/react-dashboard.d.ts.map +1 -0
- package/dist/templates/react-dashboard.js +146 -0
- package/dist/templates/react-dashboard.js.map +1 -0
- package/dist/templates/vendor-risk.d.ts +9 -0
- package/dist/templates/vendor-risk.d.ts.map +1 -0
- package/dist/templates/vendor-risk.js +186 -0
- package/dist/templates/vendor-risk.js.map +1 -0
- package/package.json +47 -0
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent file generators — shared by `agent init` and `init --agent-ready`.
|
|
3
|
+
*
|
|
4
|
+
* Each generator returns the exact content specified in ROADMAP §9 / §26.
|
|
5
|
+
*/
|
|
6
|
+
export interface GeneratedFile {
|
|
7
|
+
path: string;
|
|
8
|
+
created: boolean;
|
|
9
|
+
skipped: boolean;
|
|
10
|
+
}
|
|
11
|
+
export declare function generateAgentsMd(): string;
|
|
12
|
+
export declare function generateClaudeMd(): string;
|
|
13
|
+
export declare function generateSkillMd(): string;
|
|
14
|
+
export declare function generateCodexConfig(): string;
|
|
15
|
+
export declare function generateLlmsTxt(): string;
|
|
16
|
+
/**
|
|
17
|
+
* Write agent configuration files to the target directory.
|
|
18
|
+
*
|
|
19
|
+
* @param targetDir - Absolute path to the project root
|
|
20
|
+
* @param target - Which agent targets to generate for
|
|
21
|
+
* @param opts - Options (force overwrite)
|
|
22
|
+
* @returns List of files processed with their status
|
|
23
|
+
*/
|
|
24
|
+
export declare function writeAgentFiles(targetDir: string, target: 'codex' | 'claude' | 'all', opts?: {
|
|
25
|
+
force?: boolean;
|
|
26
|
+
}): GeneratedFile[];
|
|
27
|
+
//# sourceMappingURL=agent-files.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-files.d.ts","sourceRoot":"","sources":["../../src/commands/agent-files.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;CAClB;AAMD,wBAAgB,gBAAgB,IAAI,MAAM,CAgBzC;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CAczC;AAED,wBAAgB,eAAe,IAAI,MAAM,CAmBxC;AAED,wBAAgB,mBAAmB,IAAI,MAAM,CA8B5C;AAED,wBAAgB,eAAe,IAAI,MAAM,CA4BxC;AAMD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,EAClC,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GAC7B,aAAa,EAAE,CAsCjB"}
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent file generators — shared by `agent init` and `init --agent-ready`.
|
|
3
|
+
*
|
|
4
|
+
* Each generator returns the exact content specified in ROADMAP §9 / §26.
|
|
5
|
+
*/
|
|
6
|
+
import * as fs from 'node:fs';
|
|
7
|
+
import * as path from 'node:path';
|
|
8
|
+
// ---------------------------------------------------------------------------
|
|
9
|
+
// Content generators
|
|
10
|
+
// ---------------------------------------------------------------------------
|
|
11
|
+
export function generateAgentsMd() {
|
|
12
|
+
return `# DataForge Agent Rules
|
|
13
|
+
|
|
14
|
+
Use the DataForge CLI for all business model, graph and action operations.
|
|
15
|
+
|
|
16
|
+
Never mutate directly.
|
|
17
|
+
Always create a plan first.
|
|
18
|
+
|
|
19
|
+
Mutation flow:
|
|
20
|
+
1. Run with \`--dry-run --format json\`.
|
|
21
|
+
2. Inspect the returned \`planId\`.
|
|
22
|
+
3. Explain the plan to the user.
|
|
23
|
+
4. Apply only with \`--apply-plan <planId>\`, \`--plan-hash <hash>\`, and \`--idempotency-key\`.
|
|
24
|
+
|
|
25
|
+
Never place DataForge API keys in frontend code.
|
|
26
|
+
`;
|
|
27
|
+
}
|
|
28
|
+
export function generateClaudeMd() {
|
|
29
|
+
return `# DataForge
|
|
30
|
+
|
|
31
|
+
This repo uses DataForge for typed business operations.
|
|
32
|
+
|
|
33
|
+
Use:
|
|
34
|
+
- \`dataforge context pack --format markdown\`
|
|
35
|
+
- \`dataforge schema describe --format json\`
|
|
36
|
+
- \`dataforge query <Type> --format json\`
|
|
37
|
+
- \`dataforge actions run <Type.action> <id> --dry-run --format json\`
|
|
38
|
+
- \`dataforge plan inspect <planId> --format markdown\`
|
|
39
|
+
|
|
40
|
+
Do not guess database tables or API routes.
|
|
41
|
+
`;
|
|
42
|
+
}
|
|
43
|
+
export function generateSkillMd() {
|
|
44
|
+
return `---
|
|
45
|
+
name: dataforge
|
|
46
|
+
description: Safely inspect and operate DataForge business models using dry-run plans.
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
# DataForge Skill
|
|
50
|
+
|
|
51
|
+
When asked to operate a DataForge workspace:
|
|
52
|
+
|
|
53
|
+
1. Identify the workspace.
|
|
54
|
+
2. Load context: \`dataforge context pack --format markdown\`.
|
|
55
|
+
3. Discover schema: \`dataforge schema describe --format json\`.
|
|
56
|
+
4. Query bounded data: \`dataforge query <Type> --filter-json '...' --limit 50 --format json\`.
|
|
57
|
+
5. Dry-run mutations: \`dataforge actions run <Type.action> <id> --dry-run --format json\`.
|
|
58
|
+
6. Inspect plans: \`dataforge plan inspect <planId> --format markdown\`.
|
|
59
|
+
7. Apply plans only after explicit approval or prior user authorization.
|
|
60
|
+
8. Report requestId, planId and audit result.
|
|
61
|
+
`;
|
|
62
|
+
}
|
|
63
|
+
export function generateCodexConfig() {
|
|
64
|
+
return `# Codex configuration for DataForge projects
|
|
65
|
+
# Copy to .codex/config.toml and adjust as needed.
|
|
66
|
+
|
|
67
|
+
[agent]
|
|
68
|
+
# Read AGENTS.md for mutation flow rules
|
|
69
|
+
instructions_file = "AGENTS.md"
|
|
70
|
+
|
|
71
|
+
[tools]
|
|
72
|
+
# Allow CLI read commands without approval
|
|
73
|
+
allow = [
|
|
74
|
+
"dataforge context pack *",
|
|
75
|
+
"dataforge schema describe *",
|
|
76
|
+
"dataforge query *",
|
|
77
|
+
"dataforge search *",
|
|
78
|
+
"dataforge graph *",
|
|
79
|
+
"dataforge plan inspect *",
|
|
80
|
+
"dataforge capabilities export *",
|
|
81
|
+
"dataforge agent doctor *",
|
|
82
|
+
]
|
|
83
|
+
|
|
84
|
+
# Mutations require approval
|
|
85
|
+
require_approval = [
|
|
86
|
+
"dataforge actions run *",
|
|
87
|
+
"dataforge instance create *",
|
|
88
|
+
"dataforge instance update *",
|
|
89
|
+
"dataforge schema push *",
|
|
90
|
+
"dataforge import *",
|
|
91
|
+
]
|
|
92
|
+
`;
|
|
93
|
+
}
|
|
94
|
+
export function generateLlmsTxt() {
|
|
95
|
+
return `# DataForge
|
|
96
|
+
|
|
97
|
+
> Typed business runtime for apps and agents.
|
|
98
|
+
|
|
99
|
+
DataForge provides a visual ontology modeler with governed cloud execution.
|
|
100
|
+
Agents interact via the \`dataforge\` CLI — never by guessing database tables or API routes.
|
|
101
|
+
|
|
102
|
+
## CLI Contract
|
|
103
|
+
|
|
104
|
+
All commands output JSON: \`{ ok, data, error, page, meta }\`
|
|
105
|
+
Use \`--format json\` for machine-readable output.
|
|
106
|
+
|
|
107
|
+
## Key Commands
|
|
108
|
+
|
|
109
|
+
- \`dataforge context pack --format markdown\` — LLM-ready context
|
|
110
|
+
- \`dataforge schema describe --format json\` — discover the model
|
|
111
|
+
- \`dataforge query <Type> --format json\` — query instances
|
|
112
|
+
- \`dataforge actions run <Type.action> <id> --dry-run --format json\` — dry-run mutations
|
|
113
|
+
- \`dataforge plan inspect <planId> --format markdown\` — inspect plans
|
|
114
|
+
- \`dataforge capabilities export --format json\` — workspace capabilities
|
|
115
|
+
|
|
116
|
+
## Safety
|
|
117
|
+
|
|
118
|
+
1. Always \`--dry-run\` before mutations.
|
|
119
|
+
2. Inspect the plan, then apply with \`--apply-plan <planId>\`, \`--plan-hash <hash>\`, and an idempotency key.
|
|
120
|
+
3. Never embed API keys in frontend code.
|
|
121
|
+
`;
|
|
122
|
+
}
|
|
123
|
+
// ---------------------------------------------------------------------------
|
|
124
|
+
// Orchestrator
|
|
125
|
+
// ---------------------------------------------------------------------------
|
|
126
|
+
/**
|
|
127
|
+
* Write agent configuration files to the target directory.
|
|
128
|
+
*
|
|
129
|
+
* @param targetDir - Absolute path to the project root
|
|
130
|
+
* @param target - Which agent targets to generate for
|
|
131
|
+
* @param opts - Options (force overwrite)
|
|
132
|
+
* @returns List of files processed with their status
|
|
133
|
+
*/
|
|
134
|
+
export function writeAgentFiles(targetDir, target, opts = {}) {
|
|
135
|
+
const results = [];
|
|
136
|
+
const filesToWrite = [
|
|
137
|
+
{ relPath: 'AGENTS.md', content: generateAgentsMd(), targets: ['codex', 'all'] },
|
|
138
|
+
{ relPath: 'CLAUDE.md', content: generateClaudeMd(), targets: ['claude', 'all'] },
|
|
139
|
+
{ relPath: '.claude/skills/dataforge/SKILL.md', content: generateSkillMd(), targets: ['claude', 'all'] },
|
|
140
|
+
{ relPath: '.codex/config.toml.example', content: generateCodexConfig(), targets: ['all'] },
|
|
141
|
+
{ relPath: '.llms/dataforge.md', content: generateLlmsTxt(), targets: ['all'] },
|
|
142
|
+
];
|
|
143
|
+
for (const entry of filesToWrite) {
|
|
144
|
+
if (!entry.targets.includes(target) && target !== 'all')
|
|
145
|
+
continue;
|
|
146
|
+
const fullPath = path.join(targetDir, entry.relPath);
|
|
147
|
+
if (fs.existsSync(fullPath) && !opts.force) {
|
|
148
|
+
results.push({ path: entry.relPath, created: false, skipped: true });
|
|
149
|
+
continue;
|
|
150
|
+
}
|
|
151
|
+
fs.mkdirSync(path.dirname(fullPath), { recursive: true });
|
|
152
|
+
fs.writeFileSync(fullPath, entry.content, 'utf-8');
|
|
153
|
+
results.push({ path: entry.relPath, created: true, skipped: false });
|
|
154
|
+
}
|
|
155
|
+
// Create empty directories for 'all' target
|
|
156
|
+
if (target === 'all') {
|
|
157
|
+
const emptyDirs = ['.dataforge/plans', '.dataforge/evals', '.dataforge/examples'];
|
|
158
|
+
for (const dir of emptyDirs) {
|
|
159
|
+
const fullPath = path.join(targetDir, dir);
|
|
160
|
+
if (!fs.existsSync(fullPath)) {
|
|
161
|
+
fs.mkdirSync(fullPath, { recursive: true });
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
return results;
|
|
166
|
+
}
|
|
167
|
+
//# sourceMappingURL=agent-files.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-files.js","sourceRoot":"","sources":["../../src/commands/agent-files.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAYlC,8EAA8E;AAC9E,qBAAqB;AACrB,8EAA8E;AAE9E,MAAM,UAAU,gBAAgB;IAC9B,OAAO;;;;;;;;;;;;;;CAcR,CAAC;AACF,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,OAAO;;;;;;;;;;;;CAYR,CAAC;AACF,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,OAAO;;;;;;;;;;;;;;;;;CAiBR,CAAC;AACF,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4BR,CAAC;AACF,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;CA0BR,CAAC;AACF,CAAC;AAED,8EAA8E;AAC9E,eAAe;AACf,8EAA8E;AAE9E;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAC7B,SAAiB,EACjB,MAAkC,EAClC,OAA4B,EAAE;IAE9B,MAAM,OAAO,GAAoB,EAAE,CAAC;IAEpC,MAAM,YAAY,GAA4F;QAC5G,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,gBAAgB,EAAE,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE;QAChF,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,gBAAgB,EAAE,EAAE,OAAO,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE;QACjF,EAAE,OAAO,EAAE,mCAAmC,EAAE,OAAO,EAAE,eAAe,EAAE,EAAE,OAAO,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE;QACxG,EAAE,OAAO,EAAE,4BAA4B,EAAE,OAAO,EAAE,mBAAmB,EAAE,EAAE,OAAO,EAAE,CAAC,KAAK,CAAC,EAAE;QAC3F,EAAE,OAAO,EAAE,oBAAoB,EAAE,OAAO,EAAE,eAAe,EAAE,EAAE,OAAO,EAAE,CAAC,KAAK,CAAC,EAAE;KAChF,CAAC;IAEF,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;QACjC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,KAAK,KAAK;YAAE,SAAS;QAElE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QAErD,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAC3C,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YACrE,SAAS;QACX,CAAC;QAED,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1D,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACnD,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;IACvE,CAAC;IAED,4CAA4C;IAC5C,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;QACrB,MAAM,SAAS,GAAG,CAAC,kBAAkB,EAAE,kBAAkB,EAAE,qBAAqB,CAAC,CAAC;QAClF,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;YAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;YAC3C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC7B,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC9C,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* dataforge agent — agent configuration and readiness checks
|
|
3
|
+
*
|
|
4
|
+
* Subcommands:
|
|
5
|
+
* - `agent init` — generate agent configuration files (AGENTS.md, CLAUDE.md, skills, etc.)
|
|
6
|
+
* - `agent doctor` — verify agent-readiness of the current project
|
|
7
|
+
*
|
|
8
|
+
* ROADMAP §26 — Agent-Ready Workspace
|
|
9
|
+
*/
|
|
10
|
+
import { Command } from 'commander';
|
|
11
|
+
export interface Check {
|
|
12
|
+
name: string;
|
|
13
|
+
status: 'ok' | 'warn' | 'error';
|
|
14
|
+
message: string;
|
|
15
|
+
detail?: string;
|
|
16
|
+
}
|
|
17
|
+
export declare function registerAgent(program: Command): void;
|
|
18
|
+
/**
|
|
19
|
+
* Run the synchronous doctor checks (file presence, MCP config, API key safety).
|
|
20
|
+
* Skips async checks (context pack, dry-run) that require API configuration.
|
|
21
|
+
*/
|
|
22
|
+
export declare function runSyncDoctorChecks(baseDir: string): Check[];
|
|
23
|
+
//# sourceMappingURL=agent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/commands/agent.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAcpC,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,IAAI,GAAG,MAAM,GAAG,OAAO,CAAC;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAMD,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA6FpD;AAyID;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,EAAE,CAoB5D"}
|
|
@@ -0,0 +1,314 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* dataforge agent — agent configuration and readiness checks
|
|
3
|
+
*
|
|
4
|
+
* Subcommands:
|
|
5
|
+
* - `agent init` — generate agent configuration files (AGENTS.md, CLAUDE.md, skills, etc.)
|
|
6
|
+
* - `agent doctor` — verify agent-readiness of the current project
|
|
7
|
+
*
|
|
8
|
+
* ROADMAP §26 — Agent-Ready Workspace
|
|
9
|
+
*/
|
|
10
|
+
import * as fs from 'node:fs';
|
|
11
|
+
import * as path from 'node:path';
|
|
12
|
+
import { resolveConfig } from '../config.js';
|
|
13
|
+
import { createDfClient } from '../client.js';
|
|
14
|
+
import { output } from '../output/formatter.js';
|
|
15
|
+
import { buildCliMeta } from '../output/meta.js';
|
|
16
|
+
import { withErrorHandler, getGlobalFlags } from './shared.js';
|
|
17
|
+
import { writeAgentFiles } from './agent-files.js';
|
|
18
|
+
import { getExitCode, CliUsageError } from '../output/errors.js';
|
|
19
|
+
// ---------------------------------------------------------------------------
|
|
20
|
+
// Commander registration
|
|
21
|
+
// ---------------------------------------------------------------------------
|
|
22
|
+
export function registerAgent(program) {
|
|
23
|
+
const agent = program
|
|
24
|
+
.command('agent')
|
|
25
|
+
.description('Agent configuration: generate agent files and verify readiness');
|
|
26
|
+
// -- init ----------------------------------------------------------------
|
|
27
|
+
agent
|
|
28
|
+
.command('init')
|
|
29
|
+
.description('Generate agent configuration files (AGENTS.md, CLAUDE.md, skills)')
|
|
30
|
+
.option('--target <agent>', 'Agent target: codex | claude | all', 'all')
|
|
31
|
+
.option('--force', 'Overwrite existing files', false)
|
|
32
|
+
.action((opts) => withErrorHandler(async () => {
|
|
33
|
+
const flags = getGlobalFlags(program);
|
|
34
|
+
const target = parseTarget(opts.target);
|
|
35
|
+
const targetDir = process.cwd();
|
|
36
|
+
const results = writeAgentFiles(targetDir, target, { force: opts.force });
|
|
37
|
+
// TTY-style output (default when no --format flag)
|
|
38
|
+
if (!flags.format || flags.format === 'table') {
|
|
39
|
+
outputInitTTY(results);
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
const meta = buildCliMeta({ command: 'agent.init', workspaceId: null });
|
|
43
|
+
output({ files: results, target }, meta, flags);
|
|
44
|
+
}, () => {
|
|
45
|
+
const f = getGlobalFlags(program);
|
|
46
|
+
return f.format === 'json' ? 'json' : f.format === 'jsonl' ? 'jsonl' : 'text';
|
|
47
|
+
})());
|
|
48
|
+
// -- doctor --------------------------------------------------------------
|
|
49
|
+
agent
|
|
50
|
+
.command('doctor')
|
|
51
|
+
.description('Verify agent-readiness of the current project (8 checks)')
|
|
52
|
+
.option('--target <agent>', 'Agent target: codex | claude | all', 'all')
|
|
53
|
+
.action(async (_opts) => withErrorHandler(async () => {
|
|
54
|
+
const flags = getGlobalFlags(program);
|
|
55
|
+
const checks = [];
|
|
56
|
+
// 1. CLI installed (always OK — we're running)
|
|
57
|
+
checks.push({
|
|
58
|
+
name: 'cli_installed',
|
|
59
|
+
status: 'ok',
|
|
60
|
+
message: 'DataForge CLI is available',
|
|
61
|
+
});
|
|
62
|
+
// 2. AGENTS.md present
|
|
63
|
+
checks.push(fileCheck('agents_md', 'AGENTS.md', 'AGENTS.md'));
|
|
64
|
+
// 3. CLAUDE.md present
|
|
65
|
+
checks.push(fileCheck('claude_md', 'CLAUDE.md', 'CLAUDE.md'));
|
|
66
|
+
// 4. Skill installed
|
|
67
|
+
checks.push(fileCheck('skill_installed', '.claude/skills/dataforge/SKILL.md', 'DataForge skill (.claude/skills/dataforge/SKILL.md)'));
|
|
68
|
+
// 5. MCP config available
|
|
69
|
+
const mcpPaths = ['.mcp/dataforge.json', '.mcp.json', 'mcp.json'];
|
|
70
|
+
const mcpFound = mcpPaths.find(p => fs.existsSync(path.resolve(p)));
|
|
71
|
+
checks.push({
|
|
72
|
+
name: 'mcp_config',
|
|
73
|
+
status: mcpFound ? 'ok' : 'warn',
|
|
74
|
+
message: mcpFound ? `MCP config found: ${mcpFound}` : 'No MCP configuration found',
|
|
75
|
+
detail: mcpFound ? undefined : 'Optional: create .mcp/dataforge.json for MCP tool access',
|
|
76
|
+
});
|
|
77
|
+
// 6. API key not exposed in frontend code
|
|
78
|
+
checks.push(apiKeySafetyCheck());
|
|
79
|
+
// 7. Context pack generable
|
|
80
|
+
checks.push(await contextPackCheck(flags));
|
|
81
|
+
// 8. Dry-run works
|
|
82
|
+
checks.push(await dryRunCheck(flags));
|
|
83
|
+
// TTY-style output (default when no --format flag)
|
|
84
|
+
if (!flags.format || flags.format === 'table') {
|
|
85
|
+
outputDoctorTTY(checks);
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
const meta = buildCliMeta({ command: 'agent.doctor', workspaceId: null });
|
|
89
|
+
output({ checks }, meta, flags);
|
|
90
|
+
}
|
|
91
|
+
const hasError = checks.some(c => c.status === 'error');
|
|
92
|
+
if (hasError)
|
|
93
|
+
process.exitCode = getExitCode('INTERNAL_ERROR');
|
|
94
|
+
}, () => {
|
|
95
|
+
const f = getGlobalFlags(program);
|
|
96
|
+
return f.format === 'json' ? 'json' : f.format === 'jsonl' ? 'jsonl' : 'text';
|
|
97
|
+
})());
|
|
98
|
+
}
|
|
99
|
+
// ---------------------------------------------------------------------------
|
|
100
|
+
// Check helpers
|
|
101
|
+
// ---------------------------------------------------------------------------
|
|
102
|
+
function parseTarget(target) {
|
|
103
|
+
if (target === 'codex' || target === 'claude' || target === 'all')
|
|
104
|
+
return target;
|
|
105
|
+
throw new CliUsageError('--target must be codex, claude, or all', {
|
|
106
|
+
allowed: ['codex', 'claude', 'all'],
|
|
107
|
+
value: target,
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
function fileCheck(name, relPath, label, baseDir) {
|
|
111
|
+
const exists = fs.existsSync(baseDir ? path.join(baseDir, relPath) : path.resolve(relPath));
|
|
112
|
+
return {
|
|
113
|
+
name,
|
|
114
|
+
status: exists ? 'ok' : 'error',
|
|
115
|
+
message: exists ? `${label} found` : `${label} not found`,
|
|
116
|
+
detail: exists ? undefined : `Run: dataforge agent init --target all`,
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
function apiKeySafetyCheck(baseDir) {
|
|
120
|
+
const srcDir = path.resolve(baseDir ?? '', 'src');
|
|
121
|
+
if (!fs.existsSync(srcDir)) {
|
|
122
|
+
return {
|
|
123
|
+
name: 'api_key_safe',
|
|
124
|
+
status: 'ok',
|
|
125
|
+
message: 'No src/ directory (nothing to scan)',
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
const patterns = [/\bdf_[a-z0-9_]{10,}\b/, /DATAFORGE_API_KEY\s*[:=]\s*['"][^'"]+['"]/];
|
|
129
|
+
const violations = [];
|
|
130
|
+
walkFiles(srcDir, ['.ts', '.tsx', '.js', '.jsx'], (filePath) => {
|
|
131
|
+
// Skip .env files and node_modules
|
|
132
|
+
const rel = path.relative(srcDir, filePath);
|
|
133
|
+
if (rel.includes('node_modules') || rel.startsWith('.env'))
|
|
134
|
+
return;
|
|
135
|
+
try {
|
|
136
|
+
const content = fs.readFileSync(filePath, 'utf-8');
|
|
137
|
+
for (const pattern of patterns) {
|
|
138
|
+
if (pattern.test(content)) {
|
|
139
|
+
violations.push(path.relative(process.cwd(), filePath));
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
catch {
|
|
145
|
+
// Skip unreadable files
|
|
146
|
+
}
|
|
147
|
+
});
|
|
148
|
+
if (violations.length > 0) {
|
|
149
|
+
return {
|
|
150
|
+
name: 'api_key_safe',
|
|
151
|
+
status: 'error',
|
|
152
|
+
message: `API key potentially exposed in ${violations.length} file(s)`,
|
|
153
|
+
detail: violations.slice(0, 3).join(', '),
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
return {
|
|
157
|
+
name: 'api_key_safe',
|
|
158
|
+
status: 'ok',
|
|
159
|
+
message: 'No hardcoded API keys found in src/',
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
async function contextPackCheck(flags) {
|
|
163
|
+
try {
|
|
164
|
+
const config = resolveConfig(flags);
|
|
165
|
+
const client = createDfClient(config);
|
|
166
|
+
const start = Date.now();
|
|
167
|
+
await client.transport.requestWithHeaders({
|
|
168
|
+
method: 'GET',
|
|
169
|
+
path: '/api/v1/ontology/manifest',
|
|
170
|
+
});
|
|
171
|
+
const latency = Date.now() - start;
|
|
172
|
+
return {
|
|
173
|
+
name: 'context_pack',
|
|
174
|
+
status: 'ok',
|
|
175
|
+
message: `Context pack generable (manifest fetched in ${latency}ms)`,
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
catch (err) {
|
|
179
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
180
|
+
const isConfigError = msg.includes('API key') || msg.includes('workspace') || msg.includes('config');
|
|
181
|
+
return {
|
|
182
|
+
name: 'context_pack',
|
|
183
|
+
status: 'warn',
|
|
184
|
+
message: isConfigError ? 'Cannot verify (no API configuration)' : 'Context pack failed',
|
|
185
|
+
detail: isConfigError ? 'Set ONTOLOGIE_API_KEY and ONTOLOGIE_WORKSPACE_ID' : msg,
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
async function dryRunCheck(flags) {
|
|
190
|
+
try {
|
|
191
|
+
const config = resolveConfig(flags);
|
|
192
|
+
const client = createDfClient(config);
|
|
193
|
+
const res = await client.transport.requestWithHeaders({
|
|
194
|
+
method: 'GET',
|
|
195
|
+
path: '/api/v1/ontology/actions',
|
|
196
|
+
});
|
|
197
|
+
const data = res.data;
|
|
198
|
+
const actions = Array.isArray(data) ? data : data.actions;
|
|
199
|
+
const count = Array.isArray(actions) ? actions.length : 0;
|
|
200
|
+
return {
|
|
201
|
+
name: 'dry_run_works',
|
|
202
|
+
status: count > 0 ? 'ok' : 'warn',
|
|
203
|
+
message: count > 0
|
|
204
|
+
? `${count} action(s) available for dry-run`
|
|
205
|
+
: 'No actions found in workspace',
|
|
206
|
+
detail: count === 0 ? 'Push a schema with actions first' : undefined,
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
catch (err) {
|
|
210
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
211
|
+
const isConfigError = msg.includes('API key') || msg.includes('workspace') || msg.includes('config');
|
|
212
|
+
return {
|
|
213
|
+
name: 'dry_run_works',
|
|
214
|
+
status: 'warn',
|
|
215
|
+
message: isConfigError ? 'Cannot verify (no API configuration)' : 'Dry-run check failed',
|
|
216
|
+
detail: isConfigError ? 'Set ONTOLOGIE_API_KEY and ONTOLOGIE_WORKSPACE_ID' : msg,
|
|
217
|
+
};
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
// ---------------------------------------------------------------------------
|
|
221
|
+
// Reusable doctor checks (used by init --agent-ready)
|
|
222
|
+
// ---------------------------------------------------------------------------
|
|
223
|
+
/**
|
|
224
|
+
* Run the synchronous doctor checks (file presence, MCP config, API key safety).
|
|
225
|
+
* Skips async checks (context pack, dry-run) that require API configuration.
|
|
226
|
+
*/
|
|
227
|
+
export function runSyncDoctorChecks(baseDir) {
|
|
228
|
+
const checks = [];
|
|
229
|
+
checks.push({ name: 'cli_installed', status: 'ok', message: 'DataForge CLI is available' });
|
|
230
|
+
checks.push(fileCheck('agents_md', 'AGENTS.md', 'AGENTS.md', baseDir));
|
|
231
|
+
checks.push(fileCheck('claude_md', 'CLAUDE.md', 'CLAUDE.md', baseDir));
|
|
232
|
+
checks.push(fileCheck('skill_installed', '.claude/skills/dataforge/SKILL.md', 'DataForge skill (.claude/skills/dataforge/SKILL.md)', baseDir));
|
|
233
|
+
const mcpPaths = ['.mcp/dataforge.json', '.mcp.json', 'mcp.json'];
|
|
234
|
+
const mcpFound = mcpPaths.find(p => fs.existsSync(path.join(baseDir, p)));
|
|
235
|
+
checks.push({
|
|
236
|
+
name: 'mcp_config',
|
|
237
|
+
status: mcpFound ? 'ok' : 'warn',
|
|
238
|
+
message: mcpFound ? `MCP config found: ${mcpFound}` : 'No MCP configuration found',
|
|
239
|
+
detail: mcpFound ? undefined : 'Optional: create .mcp/dataforge.json for MCP tool access',
|
|
240
|
+
});
|
|
241
|
+
checks.push(apiKeySafetyCheck(baseDir));
|
|
242
|
+
return checks;
|
|
243
|
+
}
|
|
244
|
+
// ---------------------------------------------------------------------------
|
|
245
|
+
// File walker (bounded)
|
|
246
|
+
// ---------------------------------------------------------------------------
|
|
247
|
+
function walkFiles(dir, extensions, callback) {
|
|
248
|
+
let fileCount = 0;
|
|
249
|
+
const maxFiles = 500;
|
|
250
|
+
const stack = [dir];
|
|
251
|
+
while (stack.length > 0 && fileCount < maxFiles) {
|
|
252
|
+
const current = stack.pop();
|
|
253
|
+
let entries;
|
|
254
|
+
try {
|
|
255
|
+
entries = fs.readdirSync(current, { withFileTypes: true });
|
|
256
|
+
}
|
|
257
|
+
catch {
|
|
258
|
+
continue;
|
|
259
|
+
}
|
|
260
|
+
for (const entry of entries) {
|
|
261
|
+
if (entry.name.startsWith('.') || entry.name === 'node_modules' || entry.name === 'dist') {
|
|
262
|
+
continue;
|
|
263
|
+
}
|
|
264
|
+
const full = path.join(current, entry.name);
|
|
265
|
+
if (entry.isDirectory()) {
|
|
266
|
+
stack.push(full);
|
|
267
|
+
}
|
|
268
|
+
else if (extensions.some(ext => entry.name.endsWith(ext))) {
|
|
269
|
+
callback(full);
|
|
270
|
+
fileCount++;
|
|
271
|
+
if (fileCount >= maxFiles)
|
|
272
|
+
break;
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
// ---------------------------------------------------------------------------
|
|
278
|
+
// TTY output helpers
|
|
279
|
+
// ---------------------------------------------------------------------------
|
|
280
|
+
function outputInitTTY(results) {
|
|
281
|
+
const w = process.stdout.write.bind(process.stdout);
|
|
282
|
+
w('\n dataforge agent init\n');
|
|
283
|
+
w(' ====================\n\n');
|
|
284
|
+
for (const file of results) {
|
|
285
|
+
if (file.created) {
|
|
286
|
+
w(` \x1b[32mcreate\x1b[0m ${file.path}\n`);
|
|
287
|
+
}
|
|
288
|
+
else if (file.skipped) {
|
|
289
|
+
w(` \x1b[33mskip\x1b[0m ${file.path} (exists)\n`);
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
const created = results.filter(f => f.created).length;
|
|
293
|
+
const skipped = results.filter(f => f.skipped).length;
|
|
294
|
+
w(`\n ${created} created, ${skipped} skipped\n`);
|
|
295
|
+
w('\n Next: dataforge agent doctor --format json\n\n');
|
|
296
|
+
}
|
|
297
|
+
function outputDoctorTTY(checks) {
|
|
298
|
+
const w = process.stdout.write.bind(process.stdout);
|
|
299
|
+
w('\n dataforge agent doctor\n');
|
|
300
|
+
w(' ======================\n\n');
|
|
301
|
+
for (const check of checks) {
|
|
302
|
+
const icon = check.status === 'ok' ? '\x1b[32mOK\x1b[0m' :
|
|
303
|
+
check.status === 'warn' ? '\x1b[33mWARN\x1b[0m' :
|
|
304
|
+
'\x1b[31mERROR\x1b[0m';
|
|
305
|
+
w(` [${icon}] ${check.name}: ${check.message}\n`);
|
|
306
|
+
if (check.detail) {
|
|
307
|
+
w(` ${check.detail}\n`);
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
const errors = checks.filter(c => c.status === 'error').length;
|
|
311
|
+
const warns = checks.filter(c => c.status === 'warn').length;
|
|
312
|
+
w(`\n ${checks.length} checks: ${checks.length - errors - warns} ok, ${warns} warnings, ${errors} errors\n\n`);
|
|
313
|
+
}
|
|
314
|
+
//# sourceMappingURL=agent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/commands/agent.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,aAAa,EAAuB,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAsB,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAajE,8EAA8E;AAC9E,yBAAyB;AACzB,8EAA8E;AAE9E,MAAM,UAAU,aAAa,CAAC,OAAgB;IAC5C,MAAM,KAAK,GAAG,OAAO;SAClB,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,gEAAgE,CAAC,CAAC;IAEjF,2EAA2E;IAC3E,KAAK;SACF,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,mEAAmE,CAAC;SAChF,MAAM,CAAC,kBAAkB,EAAE,oCAAoC,EAAE,KAAK,CAAC;SACvE,MAAM,CAAC,SAAS,EAAE,0BAA0B,EAAE,KAAK,CAAC;SACpD,MAAM,CAAC,CAAC,IAAwC,EAAE,EAAE,CAAC,gBAAgB,CAAC,KAAK,IAAI,EAAE;QAChF,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;QACtC,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACxC,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAEhC,MAAM,OAAO,GAAG,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAE1E,mDAAmD;QACnD,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;YAC9C,aAAa,CAAC,OAAO,CAAC,CAAC;YACvB,OAAO;QACT,CAAC;QAED,MAAM,IAAI,GAAG,YAAY,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;QACxE,MAAM,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAClD,CAAC,EAAE,GAAG,EAAE;QACN,MAAM,CAAC,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;QAClC,OAAO,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;IAChF,CAAC,CAAC,EAAE,CAAC,CAAC;IAER,2EAA2E;IAC3E,KAAK;SACF,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,0DAA0D,CAAC;SACvE,MAAM,CAAC,kBAAkB,EAAE,oCAAoC,EAAE,KAAK,CAAC;SACvE,MAAM,CAAC,KAAK,EAAE,KAAyB,EAAE,EAAE,CAAC,gBAAgB,CAAC,KAAK,IAAI,EAAE;QACvE,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;QACtC,MAAM,MAAM,GAAY,EAAE,CAAC;QAE3B,+CAA+C;QAC/C,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,eAAe;YACrB,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,4BAA4B;SACtC,CAAC,CAAC;QAEH,uBAAuB;QACvB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC;QAE9D,uBAAuB;QACvB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC;QAE9D,qBAAqB;QACrB,MAAM,CAAC,IAAI,CAAC,SAAS,CACnB,iBAAiB,EACjB,mCAAmC,EACnC,qDAAqD,CACtD,CAAC,CAAC;QAEH,0BAA0B;QAC1B,MAAM,QAAQ,GAAG,CAAC,qBAAqB,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;QAClE,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACpE,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,YAAY;YAClB,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM;YAChC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,qBAAqB,QAAQ,EAAE,CAAC,CAAC,CAAC,4BAA4B;YAClF,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,0DAA0D;SAC1F,CAAC,CAAC;QAEH,0CAA0C;QAC1C,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;QAEjC,4BAA4B;QAC5B,MAAM,CAAC,IAAI,CAAC,MAAM,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;QAE3C,mBAAmB;QACnB,MAAM,CAAC,IAAI,CAAC,MAAM,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;QAEtC,mDAAmD;QACnD,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;YAC9C,eAAe,CAAC,MAAM,CAAC,CAAC;QAC1B,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,GAAG,YAAY,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;YAC1E,MAAM,CAAC,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QAClC,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC;QACxD,IAAI,QAAQ;YAAE,OAAO,CAAC,QAAQ,GAAG,WAAW,CAAC,gBAAgB,CAAC,CAAC;IACjE,CAAC,EAAE,GAAG,EAAE;QACN,MAAM,CAAC,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;QAClC,OAAO,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;IAChF,CAAC,CAAC,EAAE,CAAC,CAAC;AACV,CAAC;AAED,8EAA8E;AAC9E,gBAAgB;AAChB,8EAA8E;AAE9E,SAAS,WAAW,CAAC,MAAc;IACjC,IAAI,MAAM,KAAK,OAAO,IAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,KAAK;QAAE,OAAO,MAAM,CAAC;IACjF,MAAM,IAAI,aAAa,CAAC,wCAAwC,EAAE;QAChE,OAAO,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC;QACnC,KAAK,EAAE,MAAM;KACd,CAAC,CAAC;AACL,CAAC;AAED,SAAS,SAAS,CAAC,IAAY,EAAE,OAAe,EAAE,KAAa,EAAE,OAAgB;IAC/E,MAAM,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;IAC5F,OAAO;QACL,IAAI;QACJ,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO;QAC/B,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,YAAY;QACzD,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,wCAAwC;KACtE,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAgB;IACzC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC;IAClD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,OAAO;YACL,IAAI,EAAE,cAAc;YACpB,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,qCAAqC;SAC/C,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,CAAC,uBAAuB,EAAE,2CAA2C,CAAC,CAAC;IACxF,MAAM,UAAU,GAAa,EAAE,CAAC;IAEhC,SAAS,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE;QAC7D,mCAAmC;QACnC,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC5C,IAAI,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC;YAAE,OAAO;QAEnE,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACnD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;gBAC/B,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC1B,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC;oBACxD,OAAO;gBACT,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,wBAAwB;QAC1B,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,OAAO;YACL,IAAI,EAAE,cAAc;YACpB,MAAM,EAAE,OAAO;YACf,OAAO,EAAE,kCAAkC,UAAU,CAAC,MAAM,UAAU;YACtE,MAAM,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;SAC1C,CAAC;IACJ,CAAC;IAED,OAAO;QACL,IAAI,EAAE,cAAc;QACpB,MAAM,EAAE,IAAI;QACZ,OAAO,EAAE,qCAAqC;KAC/C,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,KAAqC;IACnE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;QACpC,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;QAEtC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACzB,MAAM,MAAM,CAAC,SAAS,CAAC,kBAAkB,CAAC;YACxC,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,2BAA2B;SAClC,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;QAEnC,OAAO;YACL,IAAI,EAAE,cAAc;YACpB,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,+CAA+C,OAAO,KAAK;SACrE,CAAC;IACJ,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7D,MAAM,aAAa,GAAG,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACrG,OAAO;YACL,IAAI,EAAE,cAAc;YACpB,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,sCAAsC,CAAC,CAAC,CAAC,qBAAqB;YACvF,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,kDAAkD,CAAC,CAAC,CAAC,GAAG;SACjF,CAAC;IACJ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,KAAqC;IAC9D,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;QACpC,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;QAEtC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,kBAAkB,CAA0B;YAC7E,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,0BAA0B;SACjC,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;QACtB,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAE,IAAgC,CAAC,OAAO,CAAC;QACvF,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAE1D,OAAO;YACL,IAAI,EAAE,eAAe;YACrB,MAAM,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM;YACjC,OAAO,EAAE,KAAK,GAAG,CAAC;gBAChB,CAAC,CAAC,GAAG,KAAK,kCAAkC;gBAC5C,CAAC,CAAC,+BAA+B;YACnC,MAAM,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAC,SAAS;SACrE,CAAC;IACJ,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7D,MAAM,aAAa,GAAG,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACrG,OAAO;YACL,IAAI,EAAE,eAAe;YACrB,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,sCAAsC,CAAC,CAAC,CAAC,sBAAsB;YACxF,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,kDAAkD,CAAC,CAAC,CAAC,GAAG;SACjF,CAAC;IACJ,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,sDAAsD;AACtD,8EAA8E;AAE9E;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAe;IACjD,MAAM,MAAM,GAAY,EAAE,CAAC;IAE3B,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,4BAA4B,EAAE,CAAC,CAAC;IAC5F,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;IACvE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;IACvE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,mCAAmC,EAAE,qDAAqD,EAAE,OAAO,CAAC,CAAC,CAAC;IAE/I,MAAM,QAAQ,GAAG,CAAC,qBAAqB,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;IAClE,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1E,MAAM,CAAC,IAAI,CAAC;QACV,IAAI,EAAE,YAAY;QAClB,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM;QAChC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,qBAAqB,QAAQ,EAAE,CAAC,CAAC,CAAC,4BAA4B;QAClF,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,0DAA0D;KAC1F,CAAC,CAAC;IAEH,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC;IAExC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,8EAA8E;AAC9E,wBAAwB;AACxB,8EAA8E;AAE9E,SAAS,SAAS,CAAC,GAAW,EAAE,UAAoB,EAAE,QAAoC;IACxF,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,MAAM,QAAQ,GAAG,GAAG,CAAC;IACrB,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;IAEpB,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,GAAG,QAAQ,EAAE,CAAC;QAChD,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,EAAG,CAAC;QAC7B,IAAI,OAAoB,CAAC;QACzB,IAAI,CAAC;YACH,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7D,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;QAED,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBACzF,SAAS;YACX,CAAC;YACD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAC5C,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBACxB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnB,CAAC;iBAAM,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBAC5D,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACf,SAAS,EAAE,CAAC;gBACZ,IAAI,SAAS,IAAI,QAAQ;oBAAE,MAAM;YACnC,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,qBAAqB;AACrB,8EAA8E;AAE9E,SAAS,aAAa,CAAC,OAAwB;IAC7C,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACpD,CAAC,CAAC,4BAA4B,CAAC,CAAC;IAChC,CAAC,CAAC,4BAA4B,CAAC,CAAC;IAEhC,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC3B,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,CAAC,CAAC,2BAA2B,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;QAC9C,CAAC;aAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACxB,CAAC,CAAC,2BAA2B,IAAI,CAAC,IAAI,aAAa,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;IACtD,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;IACtD,CAAC,CAAC,OAAO,OAAO,aAAa,OAAO,YAAY,CAAC,CAAC;IAClD,CAAC,CAAC,oDAAoD,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,eAAe,CAAC,MAAe;IACtC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACpD,CAAC,CAAC,8BAA8B,CAAC,CAAC;IAClC,CAAC,CAAC,8BAA8B,CAAC,CAAC;IAElC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC;YAC7C,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC;gBACjD,sBAAsB,CAAC;QACpC,CAAC,CAAC,MAAM,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;QACnD,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACjB,CAAC,CAAC,WAAW,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,MAAM,CAAC;IAC/D,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,MAAM,CAAC;IAC7D,CAAC,CAAC,OAAO,MAAM,CAAC,MAAM,YAAY,MAAM,CAAC,MAAM,GAAG,MAAM,GAAG,KAAK,QAAQ,KAAK,cAAc,MAAM,aAAa,CAAC,CAAC;AAClH,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* dataforge audit — Query and export audit events.
|
|
3
|
+
*
|
|
4
|
+
* Subcommands:
|
|
5
|
+
* list — Query audit events with filters
|
|
6
|
+
* export — Export audit events to CSV/JSON
|
|
7
|
+
* history — Get entity audit history
|
|
8
|
+
*/
|
|
9
|
+
import { Command } from 'commander';
|
|
10
|
+
export declare function registerAudit(program: Command): void;
|
|
11
|
+
//# sourceMappingURL=audit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../src/commands/audit.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA2FpD"}
|