@llm-dev-ops/agentics-cli 1.4.6 → 1.4.8
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/adapters/base-adapter.d.ts +117 -0
- package/dist/adapters/base-adapter.d.ts.map +1 -1
- package/dist/adapters/base-adapter.js +143 -0
- package/dist/adapters/base-adapter.js.map +1 -1
- package/dist/auth/identity-resolver.d.ts +21 -0
- package/dist/auth/identity-resolver.d.ts.map +1 -0
- package/dist/auth/identity-resolver.js +68 -0
- package/dist/auth/identity-resolver.js.map +1 -0
- package/dist/auth/index.d.ts +2 -0
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +2 -0
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/role-permissions.d.ts +12 -0
- package/dist/auth/role-permissions.d.ts.map +1 -0
- package/dist/auth/role-permissions.js +43 -0
- package/dist/auth/role-permissions.js.map +1 -0
- package/dist/cli/index.js +139 -134
- package/dist/cli/index.js.map +1 -1
- package/dist/commands/erp.d.ts.map +1 -1
- package/dist/commands/erp.js +62 -0
- package/dist/commands/erp.js.map +1 -1
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +25 -0
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/logout.d.ts.map +1 -1
- package/dist/commands/logout.js +4 -1
- package/dist/commands/logout.js.map +1 -1
- package/dist/commands/plan.d.ts.map +1 -1
- package/dist/commands/plan.js +6 -5
- package/dist/commands/plan.js.map +1 -1
- package/dist/commands/simulate.d.ts.map +1 -1
- package/dist/commands/simulate.js +57 -1
- package/dist/commands/simulate.js.map +1 -1
- package/dist/commands/whoami.d.ts +4 -0
- package/dist/commands/whoami.d.ts.map +1 -1
- package/dist/commands/whoami.js +22 -5
- package/dist/commands/whoami.js.map +1 -1
- package/dist/contracts/adr-002-operational-enforcement.d.ts +684 -0
- package/dist/contracts/adr-002-operational-enforcement.d.ts.map +1 -0
- package/dist/contracts/adr-002-operational-enforcement.js +671 -0
- package/dist/contracts/adr-002-operational-enforcement.js.map +1 -0
- package/dist/contracts/adr-003-governance-architecture.d.ts +766 -0
- package/dist/contracts/adr-003-governance-architecture.d.ts.map +1 -0
- package/dist/contracts/adr-003-governance-architecture.js +773 -0
- package/dist/contracts/adr-003-governance-architecture.js.map +1 -0
- package/dist/contracts/adr-004-enterprise-integration-memory.d.ts +1150 -0
- package/dist/contracts/adr-004-enterprise-integration-memory.d.ts.map +1 -0
- package/dist/contracts/adr-004-enterprise-integration-memory.js +1158 -0
- package/dist/contracts/adr-004-enterprise-integration-memory.js.map +1 -0
- package/dist/contracts/adr-005-system-coherence-drift-self-governance.d.ts +1393 -0
- package/dist/contracts/adr-005-system-coherence-drift-self-governance.d.ts.map +1 -0
- package/dist/contracts/adr-005-system-coherence-drift-self-governance.js +1371 -0
- package/dist/contracts/adr-005-system-coherence-drift-self-governance.js.map +1 -0
- package/dist/contracts/adr-006-claude-code-synthesis-runner.d.ts +196 -0
- package/dist/contracts/adr-006-claude-code-synthesis-runner.d.ts.map +1 -0
- package/dist/contracts/adr-006-claude-code-synthesis-runner.js +177 -0
- package/dist/contracts/adr-006-claude-code-synthesis-runner.js.map +1 -0
- package/dist/contracts/adr-007-subcommand-synthesis-router.d.ts +273 -0
- package/dist/contracts/adr-007-subcommand-synthesis-router.d.ts.map +1 -0
- package/dist/contracts/adr-007-subcommand-synthesis-router.js +226 -0
- package/dist/contracts/adr-007-subcommand-synthesis-router.js.map +1 -0
- package/dist/contracts/adr-008-synthesis-artifact-persistence.d.ts +323 -0
- package/dist/contracts/adr-008-synthesis-artifact-persistence.d.ts.map +1 -0
- package/dist/contracts/adr-008-synthesis-artifact-persistence.js +184 -0
- package/dist/contracts/adr-008-synthesis-artifact-persistence.js.map +1 -0
- package/dist/contracts/adr-command-semantics.d.ts +150 -0
- package/dist/contracts/adr-command-semantics.d.ts.map +1 -0
- package/dist/contracts/adr-command-semantics.js +984 -0
- package/dist/contracts/adr-command-semantics.js.map +1 -0
- package/dist/contracts/index.d.ts +5 -0
- package/dist/contracts/index.d.ts.map +1 -1
- package/dist/contracts/index.js +16 -0
- package/dist/contracts/index.js.map +1 -1
- package/dist/enterprise/index.d.ts +16 -0
- package/dist/enterprise/index.d.ts.map +1 -0
- package/dist/enterprise/index.js +17 -0
- package/dist/enterprise/index.js.map +1 -0
- package/dist/enterprise/integration-registry.d.ts +73 -0
- package/dist/enterprise/integration-registry.d.ts.map +1 -0
- package/dist/enterprise/integration-registry.js +252 -0
- package/dist/enterprise/integration-registry.js.map +1 -0
- package/dist/enterprise/lineage.d.ts +73 -0
- package/dist/enterprise/lineage.d.ts.map +1 -0
- package/dist/enterprise/lineage.js +218 -0
- package/dist/enterprise/lineage.js.map +1 -0
- package/dist/gates/argument-guard.d.ts +39 -0
- package/dist/gates/argument-guard.d.ts.map +1 -0
- package/dist/gates/argument-guard.js +180 -0
- package/dist/gates/argument-guard.js.map +1 -0
- package/dist/gates/index.d.ts +5 -0
- package/dist/gates/index.d.ts.map +1 -1
- package/dist/gates/index.js +7 -0
- package/dist/gates/index.js.map +1 -1
- package/dist/gates/lineage-gate.d.ts +55 -0
- package/dist/gates/lineage-gate.d.ts.map +1 -0
- package/dist/gates/lineage-gate.js +127 -0
- package/dist/gates/lineage-gate.js.map +1 -0
- package/dist/mcp/mcp-server.d.ts +35 -0
- package/dist/mcp/mcp-server.d.ts.map +1 -0
- package/dist/mcp/mcp-server.js +692 -0
- package/dist/mcp/mcp-server.js.map +1 -0
- package/dist/modules/help-renderer.d.ts +25 -0
- package/dist/modules/help-renderer.d.ts.map +1 -0
- package/dist/modules/help-renderer.js +163 -0
- package/dist/modules/help-renderer.js.map +1 -0
- package/dist/modules/index.d.ts +1 -0
- package/dist/modules/index.d.ts.map +1 -1
- package/dist/modules/index.js +1 -0
- package/dist/modules/index.js.map +1 -1
- package/dist/runtime/claude-code-runner.d.ts +93 -0
- package/dist/runtime/claude-code-runner.d.ts.map +1 -0
- package/dist/runtime/claude-code-runner.js +588 -0
- package/dist/runtime/claude-code-runner.js.map +1 -0
- package/dist/runtime/index.d.ts +5 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +5 -0
- package/dist/runtime/index.js.map +1 -0
- package/dist/server/index.d.ts +2 -0
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +16 -1
- package/dist/server/index.js.map +1 -1
- package/dist/server/routes/identity.d.ts +9 -0
- package/dist/server/routes/identity.d.ts.map +1 -0
- package/dist/server/routes/identity.js +100 -0
- package/dist/server/routes/identity.js.map +1 -0
- package/dist/server/routes/index.d.ts +2 -0
- package/dist/server/routes/index.d.ts.map +1 -1
- package/dist/server/routes/index.js +2 -0
- package/dist/server/routes/index.js.map +1 -1
- package/dist/server/routes/lineage.d.ts +15 -0
- package/dist/server/routes/lineage.d.ts.map +1 -0
- package/dist/server/routes/lineage.js +128 -0
- package/dist/server/routes/lineage.js.map +1 -0
- package/dist/synthesis/artifact-writer.d.ts +62 -0
- package/dist/synthesis/artifact-writer.d.ts.map +1 -0
- package/dist/synthesis/artifact-writer.js +603 -0
- package/dist/synthesis/artifact-writer.js.map +1 -0
- package/dist/synthesis/index.d.ts +7 -0
- package/dist/synthesis/index.d.ts.map +1 -0
- package/dist/synthesis/index.js +7 -0
- package/dist/synthesis/index.js.map +1 -0
- package/dist/synthesis/prompts/index.d.ts +50 -0
- package/dist/synthesis/prompts/index.d.ts.map +1 -0
- package/dist/synthesis/prompts/index.js +502 -0
- package/dist/synthesis/prompts/index.js.map +1 -0
- package/dist/synthesis/router.d.ts +70 -0
- package/dist/synthesis/router.d.ts.map +1 -0
- package/dist/synthesis/router.js +346 -0
- package/dist/synthesis/router.js.map +1 -0
- package/dist/types/index.d.ts +132 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utils/identity-store.d.ts +31 -0
- package/dist/utils/identity-store.d.ts.map +1 -0
- package/dist/utils/identity-store.js +97 -0
- package/dist/utils/identity-store.js.map +1 -0
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -0
- package/dist/utils/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,346 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Synthesis Router — ADR-007 Implementation
|
|
3
|
+
*
|
|
4
|
+
* Enterprise-grade subcommand-aware routing layer. Intercepts decision-grade
|
|
5
|
+
* subcommands, constructs a prompt, invokes Claude Code, and returns
|
|
6
|
+
* contract-validated output with full traceability metadata.
|
|
7
|
+
*
|
|
8
|
+
* INVARIANTS:
|
|
9
|
+
* - Only DECISION_GRADE_SUBCOMMANDS can trigger Claude Code invocation
|
|
10
|
+
* - Every invocation produces exactly one Claude Code call
|
|
11
|
+
* - All returned data is contract-validated against the mapped schema
|
|
12
|
+
* - SYNTHESIS_FORBIDDEN commands never reach the Claude Code runner
|
|
13
|
+
* - The prompt, run-id, seed, and synthesis class are always in the result
|
|
14
|
+
* - Errors are wrapped with routing context for diagnostics
|
|
15
|
+
* - User-provided correlationId flows through the entire pipeline
|
|
16
|
+
*
|
|
17
|
+
* FORBIDDEN:
|
|
18
|
+
* - Calling Claude Code for SYNTHESIS_FORBIDDEN commands
|
|
19
|
+
* - Writing artifacts (ADR-008 handles that)
|
|
20
|
+
* - Calling the platform API (command executors handle that)
|
|
21
|
+
* - Mutating CLI state
|
|
22
|
+
* - Interactive confirmation (the CLI's gate pipeline handles that)
|
|
23
|
+
*/
|
|
24
|
+
import { isSynthesisAllowed, isCommitmentGrade, } from '../contracts/adr-command-semantics.js';
|
|
25
|
+
import { SYNTHESIS_SCHEMA_MAP, } from '../contracts/adr-006-claude-code-synthesis-runner.js';
|
|
26
|
+
import { DECISION_GRADE_SUBCOMMANDS, } from '../contracts/adr-007-subcommand-synthesis-router.js';
|
|
27
|
+
import { PROMPT_TEMPLATES } from './prompts/index.js';
|
|
28
|
+
import { createClaudeCodeRunner } from '../runtime/claude-code-runner.js';
|
|
29
|
+
import { CLIError } from '../errors/index.js';
|
|
30
|
+
// ============================================================================
|
|
31
|
+
// Constants
|
|
32
|
+
// ============================================================================
|
|
33
|
+
/** Maximum prompt length before emitting a diagnostic warning (50 KiB) */
|
|
34
|
+
const MAX_PROMPT_LENGTH = 50_000;
|
|
35
|
+
/** Minimum acceptable prompt length — templates must produce >50 chars */
|
|
36
|
+
const MIN_PROMPT_LENGTH = 50;
|
|
37
|
+
// ============================================================================
|
|
38
|
+
// Input Validation
|
|
39
|
+
// ============================================================================
|
|
40
|
+
/**
|
|
41
|
+
* Validate a SynthesisRequest has required structure.
|
|
42
|
+
* Catches programming errors at the boundary before touching the runner.
|
|
43
|
+
*
|
|
44
|
+
* @throws CLIError (ECLI-SYNTH-020) on invalid request structure
|
|
45
|
+
*/
|
|
46
|
+
function validateSynthesisRequest(request) {
|
|
47
|
+
if (!request.command || typeof request.command !== 'string') {
|
|
48
|
+
throw new CLIError({
|
|
49
|
+
code: 'ECLI-SYNTH-020',
|
|
50
|
+
category: 'INTERNAL_ERROR',
|
|
51
|
+
message: 'SynthesisRequest.command is empty or invalid',
|
|
52
|
+
details: { command: request.command },
|
|
53
|
+
module: 'synthesis-router',
|
|
54
|
+
recoverable: false,
|
|
55
|
+
exitCode: 70,
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
if (!request.subcommand || typeof request.subcommand !== 'string') {
|
|
59
|
+
throw new CLIError({
|
|
60
|
+
code: 'ECLI-SYNTH-020',
|
|
61
|
+
category: 'INTERNAL_ERROR',
|
|
62
|
+
message: 'SynthesisRequest.subcommand is empty or invalid',
|
|
63
|
+
details: { command: request.command, subcommand: request.subcommand },
|
|
64
|
+
module: 'synthesis-router',
|
|
65
|
+
recoverable: false,
|
|
66
|
+
exitCode: 70,
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
if (!request.userContext || typeof request.userContext.traceId !== 'string') {
|
|
70
|
+
throw new CLIError({
|
|
71
|
+
code: 'ECLI-SYNTH-020',
|
|
72
|
+
category: 'INTERNAL_ERROR',
|
|
73
|
+
message: 'SynthesisRequest.userContext.traceId is required',
|
|
74
|
+
details: { command: request.command, subcommand: request.subcommand },
|
|
75
|
+
module: 'synthesis-router',
|
|
76
|
+
recoverable: false,
|
|
77
|
+
exitCode: 70,
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Validate the prompt generated by a template meets minimum requirements.
|
|
83
|
+
*
|
|
84
|
+
* @throws CLIError (ECLI-SYNTH-021) on invalid prompt output
|
|
85
|
+
*/
|
|
86
|
+
function validatePromptOutput(prompt, key) {
|
|
87
|
+
if (typeof prompt !== 'string' || prompt.length < MIN_PROMPT_LENGTH) {
|
|
88
|
+
throw new CLIError({
|
|
89
|
+
code: 'ECLI-SYNTH-021',
|
|
90
|
+
category: 'INTERNAL_ERROR',
|
|
91
|
+
message: `Prompt template for "${key}" produced ${prompt?.length ?? 0} characters (minimum: ${MIN_PROMPT_LENGTH})`,
|
|
92
|
+
details: {
|
|
93
|
+
key,
|
|
94
|
+
prompt_length: prompt?.length ?? 0,
|
|
95
|
+
minimum_length: MIN_PROMPT_LENGTH,
|
|
96
|
+
},
|
|
97
|
+
module: 'synthesis-router',
|
|
98
|
+
recoverable: false,
|
|
99
|
+
exitCode: 70,
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
if (prompt.length > MAX_PROMPT_LENGTH) {
|
|
103
|
+
process.stderr.write(`[synthesis-router] WARNING: Prompt for "${key}" is ${prompt.length} characters ` +
|
|
104
|
+
`(recommended max: ${MAX_PROMPT_LENGTH}). Large prompts may increase latency.\n`);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
// ============================================================================
|
|
108
|
+
// Routing Gates (shared between routeSynthesis and buildSynthesisPrompt)
|
|
109
|
+
// ============================================================================
|
|
110
|
+
/**
|
|
111
|
+
* Execute the four routing gates common to synthesis and dry-run.
|
|
112
|
+
* Returns the validated template function, schema name, synthesis class,
|
|
113
|
+
* and routing key — or null if the command is not decision-grade.
|
|
114
|
+
*
|
|
115
|
+
* @throws CLIError on missing template or schema (internal configuration errors)
|
|
116
|
+
*/
|
|
117
|
+
function executeRoutingGates(request) {
|
|
118
|
+
const key = `${request.command}.${request.subcommand}`;
|
|
119
|
+
const correlationId = request.userContext.traceId;
|
|
120
|
+
// Gate 1: Check if this is a decision-grade subcommand
|
|
121
|
+
if (!DECISION_GRADE_SUBCOMMANDS.has(key)) {
|
|
122
|
+
return null;
|
|
123
|
+
}
|
|
124
|
+
// Gate 2: Verify ADR-001 registry agrees
|
|
125
|
+
if (!isSynthesisAllowed(request.command, request.subcommand)) {
|
|
126
|
+
return null;
|
|
127
|
+
}
|
|
128
|
+
// Gate 3: Verify we have a prompt template
|
|
129
|
+
const templateFn = PROMPT_TEMPLATES[key];
|
|
130
|
+
if (!templateFn) {
|
|
131
|
+
throw new CLIError({
|
|
132
|
+
code: 'ECLI-SYNTH-010',
|
|
133
|
+
category: 'INTERNAL_ERROR',
|
|
134
|
+
message: `No prompt template registered for ${key}`,
|
|
135
|
+
details: { command: request.command, subcommand: request.subcommand },
|
|
136
|
+
module: 'synthesis-router',
|
|
137
|
+
correlationId,
|
|
138
|
+
recoverable: false,
|
|
139
|
+
exitCode: 70,
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
// Gate 4: Verify we have a schema mapping
|
|
143
|
+
const schemaName = SYNTHESIS_SCHEMA_MAP[key];
|
|
144
|
+
if (!schemaName) {
|
|
145
|
+
throw new CLIError({
|
|
146
|
+
code: 'ECLI-SYNTH-011',
|
|
147
|
+
category: 'INTERNAL_ERROR',
|
|
148
|
+
message: `No contract schema mapped for ${key}`,
|
|
149
|
+
details: { command: request.command, subcommand: request.subcommand },
|
|
150
|
+
module: 'synthesis-router',
|
|
151
|
+
correlationId,
|
|
152
|
+
recoverable: false,
|
|
153
|
+
exitCode: 70,
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
// Determine synthesis governance class from ADR-001 registry
|
|
157
|
+
const synthesisClass = isCommitmentGrade(request.command, request.subcommand)
|
|
158
|
+
? 'COMMITMENT_GRADE'
|
|
159
|
+
: 'SYNTHESIS_REQUIRED';
|
|
160
|
+
return { key, templateFn, schemaName, synthesisClass };
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Generate a run-id, seed, and prompt from a validated routing gate result.
|
|
164
|
+
*/
|
|
165
|
+
function generatePrompt(request, gate) {
|
|
166
|
+
const runId = `run-${crypto.randomUUID()}`;
|
|
167
|
+
const seed = Math.floor(Math.random() * 1_000_000);
|
|
168
|
+
const promptArgs = {
|
|
169
|
+
runId,
|
|
170
|
+
seed,
|
|
171
|
+
command: request.command,
|
|
172
|
+
subcommand: request.subcommand,
|
|
173
|
+
positionalArgs: request.positionalArgs,
|
|
174
|
+
options: request.options,
|
|
175
|
+
contractSchemaName: gate.schemaName,
|
|
176
|
+
};
|
|
177
|
+
const prompt = gate.templateFn(promptArgs);
|
|
178
|
+
validatePromptOutput(prompt, gate.key);
|
|
179
|
+
return { runId, seed, prompt };
|
|
180
|
+
}
|
|
181
|
+
// ============================================================================
|
|
182
|
+
// Classification Helpers
|
|
183
|
+
// ============================================================================
|
|
184
|
+
/**
|
|
185
|
+
* Determine the synthesis governance class for a (command, subcommand) pair.
|
|
186
|
+
*
|
|
187
|
+
* @returns 'COMMITMENT_GRADE' or 'SYNTHESIS_REQUIRED' for decision-grade commands, null otherwise
|
|
188
|
+
*/
|
|
189
|
+
export function getSynthesisClass(command, subcommand) {
|
|
190
|
+
const key = `${command}.${subcommand}`;
|
|
191
|
+
if (!DECISION_GRADE_SUBCOMMANDS.has(key)) {
|
|
192
|
+
return null;
|
|
193
|
+
}
|
|
194
|
+
return isCommitmentGrade(command, subcommand) ? 'COMMITMENT_GRADE' : 'SYNTHESIS_REQUIRED';
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Check if a (command, subcommand) pair is decision-grade.
|
|
198
|
+
* Convenience function for use in CLI dispatch.
|
|
199
|
+
*/
|
|
200
|
+
export function isDecisionGrade(command, subcommand) {
|
|
201
|
+
if (!subcommand)
|
|
202
|
+
return false;
|
|
203
|
+
return DECISION_GRADE_SUBCOMMANDS.has(`${command}.${subcommand}`);
|
|
204
|
+
}
|
|
205
|
+
// ============================================================================
|
|
206
|
+
// Dry-Run / Prompt Builder
|
|
207
|
+
// ============================================================================
|
|
208
|
+
/**
|
|
209
|
+
* Build a synthesis prompt without invoking Claude Code.
|
|
210
|
+
*
|
|
211
|
+
* Useful for:
|
|
212
|
+
* - Dry-run mode: inspect what would be sent to Claude Code
|
|
213
|
+
* - Testing: verify prompt generation in isolation
|
|
214
|
+
* - Debugging: see the exact prompt for a given (command, subcommand)
|
|
215
|
+
*
|
|
216
|
+
* Executes all four routing gates but stops before subprocess invocation.
|
|
217
|
+
*
|
|
218
|
+
* @returns SynthesisPromptResult with prompt and metadata, or null if not decision-grade
|
|
219
|
+
* @throws CLIError on missing template or schema (internal configuration errors)
|
|
220
|
+
*/
|
|
221
|
+
export function buildSynthesisPrompt(request) {
|
|
222
|
+
validateSynthesisRequest(request);
|
|
223
|
+
const gate = executeRoutingGates(request);
|
|
224
|
+
if (gate === null) {
|
|
225
|
+
return null;
|
|
226
|
+
}
|
|
227
|
+
const { runId, seed, prompt } = generatePrompt(request, gate);
|
|
228
|
+
return {
|
|
229
|
+
prompt,
|
|
230
|
+
runId,
|
|
231
|
+
seed,
|
|
232
|
+
key: gate.key,
|
|
233
|
+
contractSchema: gate.schemaName,
|
|
234
|
+
synthesisClass: gate.synthesisClass,
|
|
235
|
+
};
|
|
236
|
+
}
|
|
237
|
+
// ============================================================================
|
|
238
|
+
// Router Implementation
|
|
239
|
+
// ============================================================================
|
|
240
|
+
/**
|
|
241
|
+
* Route a command through the synthesis pipeline.
|
|
242
|
+
*
|
|
243
|
+
* This is the primary entry point for ADR-007. The flow is:
|
|
244
|
+
*
|
|
245
|
+
* 1. Validate request structure
|
|
246
|
+
* 2. Execute routing gates (decision-grade check, ADR-001 agreement,
|
|
247
|
+
* template existence, schema mapping)
|
|
248
|
+
* 3. Determine synthesis governance class (SYNTHESIS_REQUIRED or COMMITMENT_GRADE)
|
|
249
|
+
* 4. Generate run-id, seed, and prompt
|
|
250
|
+
* 5. Invoke Claude Code via ADR-006 runner with contract validation
|
|
251
|
+
* 6. Return result with full traceability metadata
|
|
252
|
+
*
|
|
253
|
+
* For non-decision-grade commands, returns null immediately with zero overhead.
|
|
254
|
+
*
|
|
255
|
+
* @returns SynthesisResult if the command is decision-grade, null otherwise
|
|
256
|
+
* @throws CLIError on router configuration errors (ECLI-SYNTH-010/011/020/021)
|
|
257
|
+
* @throws SynthesisError on Claude Code invocation failures (ECLI-SYNTH-001..005)
|
|
258
|
+
*/
|
|
259
|
+
export function routeSynthesis(request) {
|
|
260
|
+
// Validate request structure
|
|
261
|
+
validateSynthesisRequest(request);
|
|
262
|
+
const verbose = request.flags['verbose'] ?? false;
|
|
263
|
+
const correlationId = request.userContext.traceId;
|
|
264
|
+
// Execute routing gates
|
|
265
|
+
const gate = executeRoutingGates(request);
|
|
266
|
+
if (gate === null) {
|
|
267
|
+
return null;
|
|
268
|
+
}
|
|
269
|
+
if (verbose) {
|
|
270
|
+
process.stderr.write(`[synthesis-router] routing ${gate.key} class=${gate.synthesisClass} ` +
|
|
271
|
+
`schema=${gate.schemaName} correlationId=${correlationId}\n`);
|
|
272
|
+
}
|
|
273
|
+
// Generate prompt
|
|
274
|
+
const { runId, seed, prompt } = generatePrompt(request, gate);
|
|
275
|
+
if (verbose) {
|
|
276
|
+
process.stderr.write(`[synthesis-router] prompt generated: ${prompt.length} chars ` +
|
|
277
|
+
`runId=${runId} seed=${seed}\n`);
|
|
278
|
+
}
|
|
279
|
+
// Invoke Claude Code with contract validation
|
|
280
|
+
let result;
|
|
281
|
+
try {
|
|
282
|
+
const runner = createClaudeCodeRunner();
|
|
283
|
+
result = runner.invoke(prompt, {
|
|
284
|
+
runId,
|
|
285
|
+
seed,
|
|
286
|
+
verbose,
|
|
287
|
+
schemaKey: gate.key,
|
|
288
|
+
correlationId,
|
|
289
|
+
});
|
|
290
|
+
}
|
|
291
|
+
catch (error) {
|
|
292
|
+
// Wrap errors with routing context for diagnostics
|
|
293
|
+
if (error instanceof CLIError) {
|
|
294
|
+
const enrichedDetails = {
|
|
295
|
+
...error.details,
|
|
296
|
+
routing_key: gate.key,
|
|
297
|
+
routing_synthesis_class: gate.synthesisClass,
|
|
298
|
+
routing_schema: gate.schemaName,
|
|
299
|
+
};
|
|
300
|
+
throw new CLIError({
|
|
301
|
+
code: error.code,
|
|
302
|
+
category: error.category,
|
|
303
|
+
message: `[${gate.key}] ${error.message}`,
|
|
304
|
+
details: enrichedDetails,
|
|
305
|
+
module: error.module,
|
|
306
|
+
correlationId: error.correlationId ?? correlationId,
|
|
307
|
+
recoverable: error.recoverable,
|
|
308
|
+
exitCode: error.exitCode,
|
|
309
|
+
cause: error.cause instanceof Error ? error.cause : undefined,
|
|
310
|
+
});
|
|
311
|
+
}
|
|
312
|
+
// Unknown error — wrap with context
|
|
313
|
+
throw new CLIError({
|
|
314
|
+
code: 'ECLI-SYNTH-099',
|
|
315
|
+
category: 'INTERNAL_ERROR',
|
|
316
|
+
message: `Unexpected error routing ${gate.key}: ${error instanceof Error ? error.message : String(error)}`,
|
|
317
|
+
details: {
|
|
318
|
+
routing_key: gate.key,
|
|
319
|
+
routing_synthesis_class: gate.synthesisClass,
|
|
320
|
+
error_type: error instanceof Error ? error.constructor.name : typeof error,
|
|
321
|
+
},
|
|
322
|
+
module: 'synthesis-router',
|
|
323
|
+
correlationId,
|
|
324
|
+
recoverable: false,
|
|
325
|
+
exitCode: 150,
|
|
326
|
+
cause: error instanceof Error ? error : undefined,
|
|
327
|
+
});
|
|
328
|
+
}
|
|
329
|
+
if (verbose) {
|
|
330
|
+
process.stderr.write(`[synthesis-router] synthesis complete: model=${result.model} ` +
|
|
331
|
+
`duration=${result.durationMs}ms output=${result.rawOutput.length}B\n`);
|
|
332
|
+
}
|
|
333
|
+
return {
|
|
334
|
+
data: result.data,
|
|
335
|
+
runId,
|
|
336
|
+
command: request.command,
|
|
337
|
+
subcommand: request.subcommand,
|
|
338
|
+
model: result.model,
|
|
339
|
+
durationMs: result.durationMs,
|
|
340
|
+
contractSchema: gate.schemaName,
|
|
341
|
+
rawOutput: result.rawOutput,
|
|
342
|
+
synthesisClass: gate.synthesisClass,
|
|
343
|
+
prompt,
|
|
344
|
+
};
|
|
345
|
+
}
|
|
346
|
+
//# sourceMappingURL=router.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/synthesis/router.ts"],"names":[],"mappings":"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"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -266,4 +266,136 @@ export interface AuthTokenResponse {
|
|
|
266
266
|
user_id?: string;
|
|
267
267
|
}
|
|
268
268
|
export type AuthSessionStatus = 'pending' | 'authorized' | 'expired' | 'denied';
|
|
269
|
+
export type OrgRole = 'owner' | 'admin' | 'member';
|
|
270
|
+
export interface UserIdentity {
|
|
271
|
+
user_id: string;
|
|
272
|
+
display_name: string;
|
|
273
|
+
created_at: string;
|
|
274
|
+
}
|
|
275
|
+
export interface OrgIdentity {
|
|
276
|
+
org_id: string;
|
|
277
|
+
org_name: string;
|
|
278
|
+
created_at: string;
|
|
279
|
+
}
|
|
280
|
+
export interface IdentityContext {
|
|
281
|
+
user: UserIdentity;
|
|
282
|
+
org: OrgIdentity;
|
|
283
|
+
role: OrgRole;
|
|
284
|
+
resolved_at: string;
|
|
285
|
+
}
|
|
286
|
+
export interface Attribution {
|
|
287
|
+
created_by: string;
|
|
288
|
+
org_id: string;
|
|
289
|
+
}
|
|
290
|
+
/**
|
|
291
|
+
* Artifact categories persisted into Ruvector (ADR-004, Domain 1).
|
|
292
|
+
* Every artifact is an inert proposal produced by a simulation.
|
|
293
|
+
*/
|
|
294
|
+
export type ArtifactCategory = 'simulation' | 'plan' | 'risk_assessment' | 'cost_projection' | 'integration_mapping' | 'erp_proposal' | 'decision' | 'deployment';
|
|
295
|
+
/**
|
|
296
|
+
* Lineage record linking an artifact to its parent simulation (ADR-004, Domain 2).
|
|
297
|
+
* Stored in Ruvector as first-class data, not inferred from timestamps.
|
|
298
|
+
*
|
|
299
|
+
* Invariant 3: No integration proposal exists without traceability to
|
|
300
|
+
* a simulation, a plan, and a decision context.
|
|
301
|
+
*/
|
|
302
|
+
export interface LineageRecord {
|
|
303
|
+
/** Unique lineage record ID */
|
|
304
|
+
id: string;
|
|
305
|
+
/** The artifact this lineage entry describes */
|
|
306
|
+
artifact_id: string;
|
|
307
|
+
/** The category of the artifact */
|
|
308
|
+
artifact_category: ArtifactCategory;
|
|
309
|
+
/** The simulation that produced this artifact (Invariant 2) */
|
|
310
|
+
simulation_id: string;
|
|
311
|
+
/** The plan this artifact belongs to (if applicable) */
|
|
312
|
+
plan_id?: string;
|
|
313
|
+
/** The natural language input that seeded synthesis */
|
|
314
|
+
decision_context: string;
|
|
315
|
+
/** Identity attribution (user_id, org_id) */
|
|
316
|
+
attribution: Attribution;
|
|
317
|
+
/** Governance metadata: which gate pipeline version was applied */
|
|
318
|
+
governance: {
|
|
319
|
+
gate_pipeline_version: string;
|
|
320
|
+
synthesis_classification: string;
|
|
321
|
+
};
|
|
322
|
+
/** Immutable creation timestamp */
|
|
323
|
+
created_at: string;
|
|
324
|
+
}
|
|
325
|
+
/**
|
|
326
|
+
* Simulation memory footprint persisted in Ruvector (ADR-004, Invariant 1).
|
|
327
|
+
* A simulation that exists only in memory is not a simulation —
|
|
328
|
+
* it is an untracked computation.
|
|
329
|
+
*/
|
|
330
|
+
export interface SimulationMemoryRecord {
|
|
331
|
+
/** Simulation identifier */
|
|
332
|
+
id: string;
|
|
333
|
+
type: 'simulation';
|
|
334
|
+
/** Natural language input that seeded synthesis */
|
|
335
|
+
intent: string;
|
|
336
|
+
/** Simulation status lifecycle */
|
|
337
|
+
status: 'created' | 'running' | 'completed' | 'failed';
|
|
338
|
+
/** Simulation result data (when completed) */
|
|
339
|
+
result?: unknown;
|
|
340
|
+
/** Identity attribution */
|
|
341
|
+
attribution: Attribution;
|
|
342
|
+
/** IDs of artifacts this simulation has produced */
|
|
343
|
+
artifact_ids: string[];
|
|
344
|
+
/** Immutable creation timestamp */
|
|
345
|
+
created_at: string;
|
|
346
|
+
/** Last updated timestamp */
|
|
347
|
+
updated_at: string;
|
|
348
|
+
/** Data integrity checksum */
|
|
349
|
+
checksum: string;
|
|
350
|
+
}
|
|
351
|
+
/**
|
|
352
|
+
* Integration proposal derived from a simulation (ADR-004, Domain 3).
|
|
353
|
+
* Proposals describe what would change in an enterprise system.
|
|
354
|
+
* They are never created outside of the simulation lifecycle.
|
|
355
|
+
*/
|
|
356
|
+
export interface IntegrationProposal {
|
|
357
|
+
/** Proposal identifier */
|
|
358
|
+
id: string;
|
|
359
|
+
type: 'integration_proposal';
|
|
360
|
+
/** The integration system affected (e.g. 'sap', 'salesforce') */
|
|
361
|
+
integration_name: string;
|
|
362
|
+
/** What changes would be required */
|
|
363
|
+
proposed_changes: string;
|
|
364
|
+
/** Risks introduced by this change */
|
|
365
|
+
risks: string[];
|
|
366
|
+
/** Dependencies on other proposals or artifacts */
|
|
367
|
+
dependencies: string[];
|
|
368
|
+
/** Simulation that produced this proposal (Invariant 2) */
|
|
369
|
+
simulation_id: string;
|
|
370
|
+
/** Plan this proposal belongs to */
|
|
371
|
+
plan_id?: string;
|
|
372
|
+
/** Identity attribution */
|
|
373
|
+
attribution: Attribution;
|
|
374
|
+
/** Immutable creation timestamp */
|
|
375
|
+
created_at: string;
|
|
376
|
+
}
|
|
377
|
+
/**
|
|
378
|
+
* ERP Surface mapping derived from a simulation (ADR-004, Domain 4).
|
|
379
|
+
* Describes how enterprise-wide processes would be affected.
|
|
380
|
+
* ERP Surface never initiates simulations — it receives proposals.
|
|
381
|
+
*/
|
|
382
|
+
export interface ErpSurfaceMapping {
|
|
383
|
+
/** Mapping identifier */
|
|
384
|
+
id: string;
|
|
385
|
+
type: 'erp_mapping';
|
|
386
|
+
/** ERP system type */
|
|
387
|
+
erp_type: string;
|
|
388
|
+
/** Entity type affected */
|
|
389
|
+
entity_type: string;
|
|
390
|
+
/** Proposed changes to the enterprise model */
|
|
391
|
+
proposed_implementation: unknown;
|
|
392
|
+
/** Simulation that produced this mapping (Invariant 2) */
|
|
393
|
+
simulation_id: string;
|
|
394
|
+
/** Integration proposals this mapping depends on */
|
|
395
|
+
integration_proposal_ids: string[];
|
|
396
|
+
/** Identity attribution */
|
|
397
|
+
attribution: Attribution;
|
|
398
|
+
/** Immutable creation timestamp */
|
|
399
|
+
created_at: string;
|
|
400
|
+
}
|
|
269
401
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Identity Store
|
|
3
|
+
*
|
|
4
|
+
* Securely store and retrieve cached identity context locally.
|
|
5
|
+
*
|
|
6
|
+
* STORAGE LOCATION:
|
|
7
|
+
* - ~/.agentics/identity.json (Unix/macOS)
|
|
8
|
+
* - %USERPROFILE%\.agentics\identity.json (Windows)
|
|
9
|
+
*/
|
|
10
|
+
import type { IdentityContext } from '../types/index.js';
|
|
11
|
+
export interface IIdentityStore {
|
|
12
|
+
save(identity: IdentityContext): Promise<void>;
|
|
13
|
+
load(): Promise<IdentityContext | null>;
|
|
14
|
+
delete(): Promise<void>;
|
|
15
|
+
exists(): Promise<boolean>;
|
|
16
|
+
isStale(maxAgeMs?: number): Promise<boolean>;
|
|
17
|
+
}
|
|
18
|
+
export declare class IdentityStore implements IIdentityStore {
|
|
19
|
+
private readonly configDir;
|
|
20
|
+
private readonly identityPath;
|
|
21
|
+
constructor(configDir?: string);
|
|
22
|
+
save(identity: IdentityContext): Promise<void>;
|
|
23
|
+
load(): Promise<IdentityContext | null>;
|
|
24
|
+
delete(): Promise<void>;
|
|
25
|
+
exists(): Promise<boolean>;
|
|
26
|
+
isStale(maxAgeMs?: number): Promise<boolean>;
|
|
27
|
+
getIdentityPath(): string;
|
|
28
|
+
private ensureConfigDir;
|
|
29
|
+
}
|
|
30
|
+
export declare function createIdentityStore(configDir?: string): IIdentityStore;
|
|
31
|
+
//# sourceMappingURL=identity-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"identity-store.d.ts","sourceRoot":"","sources":["../../src/utils/identity-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAMzD,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,IAAI,IAAI,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC;IACxC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACxB,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3B,OAAO,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC9C;AAcD,qBAAa,aAAc,YAAW,cAAc;IAClD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;gBAE1B,SAAS,CAAC,EAAE,MAAM;IAKxB,IAAI,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAU9C,IAAI,IAAI,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IAevC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAQvB,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAS1B,OAAO,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAWlD,eAAe,IAAI,MAAM;YAIX,eAAe;CAU9B;AAMD,wBAAgB,mBAAmB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,cAAc,CAEtE"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Identity Store
|
|
3
|
+
*
|
|
4
|
+
* Securely store and retrieve cached identity context locally.
|
|
5
|
+
*
|
|
6
|
+
* STORAGE LOCATION:
|
|
7
|
+
* - ~/.agentics/identity.json (Unix/macOS)
|
|
8
|
+
* - %USERPROFILE%\.agentics\identity.json (Windows)
|
|
9
|
+
*/
|
|
10
|
+
import * as fs from 'node:fs';
|
|
11
|
+
import * as path from 'node:path';
|
|
12
|
+
import * as os from 'node:os';
|
|
13
|
+
// ============================================================================
|
|
14
|
+
// Configuration
|
|
15
|
+
// ============================================================================
|
|
16
|
+
const AGENTICS_CONFIG_DIR = '.agentics';
|
|
17
|
+
const IDENTITY_FILE = 'identity.json';
|
|
18
|
+
const DEFAULT_MAX_AGE_MS = 3600000; // 1 hour
|
|
19
|
+
// ============================================================================
|
|
20
|
+
// Identity Store Implementation
|
|
21
|
+
// ============================================================================
|
|
22
|
+
export class IdentityStore {
|
|
23
|
+
configDir;
|
|
24
|
+
identityPath;
|
|
25
|
+
constructor(configDir) {
|
|
26
|
+
this.configDir = configDir ?? path.join(os.homedir(), AGENTICS_CONFIG_DIR);
|
|
27
|
+
this.identityPath = path.join(this.configDir, IDENTITY_FILE);
|
|
28
|
+
}
|
|
29
|
+
async save(identity) {
|
|
30
|
+
await this.ensureConfigDir();
|
|
31
|
+
const content = JSON.stringify(identity, null, 2);
|
|
32
|
+
await fs.promises.writeFile(this.identityPath, content, {
|
|
33
|
+
encoding: 'utf-8',
|
|
34
|
+
mode: 0o600,
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
async load() {
|
|
38
|
+
try {
|
|
39
|
+
const content = await fs.promises.readFile(this.identityPath, 'utf-8');
|
|
40
|
+
const identity = JSON.parse(content);
|
|
41
|
+
if (!identity.user?.user_id || !identity.org?.org_id || !identity.role) {
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
return identity;
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
async delete() {
|
|
51
|
+
try {
|
|
52
|
+
await fs.promises.unlink(this.identityPath);
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
// Ignore if file doesn't exist
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
async exists() {
|
|
59
|
+
try {
|
|
60
|
+
await fs.promises.access(this.identityPath, fs.constants.R_OK);
|
|
61
|
+
return true;
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
return false;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
async isStale(maxAgeMs) {
|
|
68
|
+
const identity = await this.load();
|
|
69
|
+
if (!identity?.resolved_at) {
|
|
70
|
+
return true;
|
|
71
|
+
}
|
|
72
|
+
const resolvedAt = new Date(identity.resolved_at).getTime();
|
|
73
|
+
const age = Date.now() - resolvedAt;
|
|
74
|
+
return age > (maxAgeMs ?? DEFAULT_MAX_AGE_MS);
|
|
75
|
+
}
|
|
76
|
+
getIdentityPath() {
|
|
77
|
+
return this.identityPath;
|
|
78
|
+
}
|
|
79
|
+
async ensureConfigDir() {
|
|
80
|
+
try {
|
|
81
|
+
await fs.promises.mkdir(this.configDir, {
|
|
82
|
+
recursive: true,
|
|
83
|
+
mode: 0o700,
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
catch {
|
|
87
|
+
// Directory may already exist
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
// ============================================================================
|
|
92
|
+
// Factory Function
|
|
93
|
+
// ============================================================================
|
|
94
|
+
export function createIdentityStore(configDir) {
|
|
95
|
+
return new IdentityStore(configDir);
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=identity-store.js.map
|