@fitlab-ai/agent-infra 0.9.13 → 0.9.14
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/bin/cli.ts +26 -9
- package/dist/bin/cli.js +173 -157
- package/dist/bin/internal-cli.js +42 -21
- package/dist/lib/agent-client.js +5 -0
- package/dist/lib/internal/agent-client.js +5 -2
- package/dist/lib/internal/cli-route-inventory.js +152 -0
- package/dist/lib/internal/codex-lifecycle.js +9 -6
- package/dist/lib/internal/codex-sandbox-controller.js +8 -2
- package/dist/lib/internal/git-workflow.js +10 -6
- package/dist/lib/internal/platform-checks.js +16 -4
- package/dist/lib/internal/platform-comment.js +16 -4
- package/dist/lib/internal/platform-context.js +4 -1
- package/dist/lib/internal/platform-issue.js +12 -4
- package/dist/lib/internal/platform-metadata.js +88 -0
- package/dist/lib/internal/platform-pr-review.js +16 -3
- package/dist/lib/internal/platform-pr.js +24 -10
- package/dist/lib/internal/platform-release-notes.js +6 -3
- package/dist/lib/internal/platform-security.js +93 -0
- package/dist/lib/internal/pr-review-grade.js +14 -3
- package/dist/lib/internal/release-workflow.js +19 -5
- package/dist/lib/internal/sandbox-control.js +22 -5
- package/dist/lib/internal/task-activity.js +13 -4
- package/dist/lib/internal/task-artifact.js +186 -27
- package/dist/lib/internal/task-context.js +4 -1
- package/dist/lib/internal/task-create.js +48 -15
- package/dist/lib/internal/task-delivery.js +4 -1
- package/dist/lib/internal/task-event.js +4 -1
- package/dist/lib/internal/task-finalization.js +4 -1
- package/dist/lib/internal/task-invalidation.js +4 -1
- package/dist/lib/internal/task-ledger.js +12 -1
- package/dist/lib/internal/task-lifecycle.js +4 -1
- package/dist/lib/internal/task-operation-registry.js +421 -0
- package/dist/lib/internal/task-orchestration.js +12 -0
- package/dist/lib/internal/task-override.js +10 -3
- package/dist/lib/internal/task-qualification.js +90 -0
- package/dist/lib/internal/task-review.js +4 -1
- package/dist/lib/internal/task-short-id.js +11 -1
- package/dist/lib/internal/task-snapshot.js +4 -1
- package/dist/lib/internal/task-validate.js +7 -2
- package/dist/lib/internal/task-verify.js +5 -1
- package/dist/lib/internal/task-warning.js +8 -1
- package/dist/lib/platform/comment-safety.js +226 -0
- package/dist/lib/platform/github-provider.js +233 -6
- package/dist/lib/platform/issue-comments.js +146 -34
- package/dist/lib/platform/pr-change-report.js +6 -12
- package/dist/lib/platform/pr-summary.js +28 -7
- package/dist/lib/platform/provider-contract.d.ts +67 -1
- package/dist/lib/platform/provider-contract.js +6 -2
- package/dist/lib/platform/provider-validation.js +76 -3
- package/dist/lib/platform/pull-requests.js +115 -170
- package/dist/lib/platform/repository-metadata.js +377 -0
- package/dist/lib/platform/security-alerts.js +155 -0
- package/dist/lib/platform/verification-sync.js +33 -26
- package/dist/lib/process-data/index.js +7 -0
- package/dist/lib/run/index.js +5 -0
- package/dist/lib/sandbox/commands/control-status.js +22 -0
- package/dist/lib/sandbox/commands/create.js +32 -6
- package/dist/lib/sandbox/commands/ls.js +5 -0
- package/dist/lib/sandbox/commands/rm.js +827 -120
- package/dist/lib/sandbox/commands/show.js +16 -0
- package/dist/lib/sandbox/control/client.js +83 -9
- package/dist/lib/sandbox/control/completed-reentry.js +85 -0
- package/dist/lib/sandbox/control/container-identity.js +28 -31
- package/dist/lib/sandbox/control/executor.js +149 -14
- package/dist/lib/sandbox/control/lifecycle.js +621 -127
- package/dist/lib/sandbox/control/native-file-lock.js +177 -0
- package/dist/lib/sandbox/control/server.js +305 -35
- package/dist/lib/sandbox/control/state.js +5 -3
- package/dist/lib/sandbox/control/task-view.js +183 -0
- package/dist/lib/sandbox/engines/authority.js +289 -0
- package/dist/lib/sandbox/engines/docker-exact-discovery.js +97 -0
- package/dist/lib/sandbox/index.js +5 -0
- package/dist/lib/sandbox/recovery.js +21 -1
- package/dist/lib/sandbox/workspace-view.js +2 -1
- package/dist/lib/sandbox/worktree-safety.js +4 -1
- package/dist/lib/server/index.js +8 -0
- package/dist/lib/task/artifact-lifecycle.js +42 -13
- package/dist/lib/task/artifact-operations.js +520 -0
- package/dist/lib/task/artifact-repair-intent.js +59 -0
- package/dist/lib/task/artifact-schema.js +135 -0
- package/dist/lib/task/capabilities.js +72 -1
- package/dist/lib/task/control-authority.js +4 -0
- package/dist/lib/task/create-service.js +103 -4
- package/dist/lib/task/create.js +25 -0
- package/dist/lib/task/events.js +186 -67
- package/dist/lib/task/index.js +11 -3
- package/dist/lib/task/local-artifact-finalization.js +75 -150
- package/dist/lib/task/orchestration.js +192 -52
- package/dist/lib/task/qualification-audit.js +490 -0
- package/dist/lib/task/qualification-confirmation.js +109 -0
- package/dist/lib/task/qualification-intents.js +148 -0
- package/dist/lib/task/review-artifacts.js +22 -23
- package/dist/lib/task/review-finalization.js +121 -4
- package/dist/lib/task/sections.js +6 -4
- package/dist/lib/task/verification-config.js +11 -0
- package/dist/lib/task/verification-engine.js +54 -4
- package/dist/lifecycle-build-manifest.json +3 -3
- package/lib/agent-client.ts +9 -0
- package/lib/internal/agent-client.ts +4 -2
- package/lib/internal/cli-route-inventory.ts +140 -0
- package/lib/internal/codex-lifecycle.ts +8 -6
- package/lib/internal/codex-sandbox-controller.ts +7 -2
- package/lib/internal/git-workflow.ts +9 -6
- package/lib/internal/platform-checks.ts +12 -4
- package/lib/internal/platform-comment.ts +12 -4
- package/lib/internal/platform-context.ts +3 -1
- package/lib/internal/platform-issue.ts +11 -4
- package/lib/internal/platform-metadata.ts +70 -0
- package/lib/internal/platform-pr-review.ts +14 -3
- package/lib/internal/platform-pr.ts +23 -10
- package/lib/internal/platform-release-notes.ts +5 -3
- package/lib/internal/platform-security.ts +83 -0
- package/lib/internal/pr-review-grade.ts +10 -3
- package/lib/internal/release-workflow.ts +17 -5
- package/lib/internal/sandbox-control.ts +19 -5
- package/lib/internal/task-activity.ts +12 -4
- package/lib/internal/task-artifact.ts +164 -25
- package/lib/internal/task-context.ts +3 -1
- package/lib/internal/task-create.ts +76 -15
- package/lib/internal/task-delivery.ts +3 -1
- package/lib/internal/task-event.ts +3 -1
- package/lib/internal/task-finalization.ts +3 -1
- package/lib/internal/task-invalidation.ts +3 -1
- package/lib/internal/task-ledger.ts +11 -1
- package/lib/internal/task-lifecycle.ts +3 -1
- package/lib/internal/task-operation-registry.ts +482 -0
- package/lib/internal/task-orchestration.ts +12 -0
- package/lib/internal/task-override.ts +9 -3
- package/lib/internal/task-qualification.ts +61 -0
- package/lib/internal/task-review.ts +3 -1
- package/lib/internal/task-short-id.ts +10 -1
- package/lib/internal/task-snapshot.ts +3 -1
- package/lib/internal/task-validate.ts +6 -2
- package/lib/internal/task-verify.ts +4 -1
- package/lib/internal/task-warning.ts +7 -1
- package/lib/platform/comment-safety.ts +250 -0
- package/lib/platform/github-provider.ts +229 -7
- package/lib/platform/issue-comments.ts +160 -35
- package/lib/platform/pr-change-report.ts +6 -12
- package/lib/platform/pr-summary.ts +27 -6
- package/lib/platform/provider-contract.ts +78 -3
- package/lib/platform/provider-validation.ts +85 -3
- package/lib/platform/pull-requests.ts +126 -178
- package/lib/platform/repository-metadata.ts +453 -0
- package/lib/platform/security-alerts.ts +191 -0
- package/lib/platform/verification-sync.ts +32 -28
- package/lib/process-data/index.ts +7 -0
- package/lib/run/index.ts +5 -0
- package/lib/sandbox/commands/control-status.ts +26 -0
- package/lib/sandbox/commands/create.ts +46 -6
- package/lib/sandbox/commands/ls.ts +7 -0
- package/lib/sandbox/commands/rm.ts +1000 -87
- package/lib/sandbox/commands/show.ts +16 -0
- package/lib/sandbox/control/client.ts +103 -9
- package/lib/sandbox/control/completed-reentry.ts +98 -0
- package/lib/sandbox/control/container-identity.ts +27 -43
- package/lib/sandbox/control/executor.ts +177 -12
- package/lib/sandbox/control/lifecycle.ts +629 -17
- package/lib/sandbox/control/native-file-lock.ts +209 -0
- package/lib/sandbox/control/protocol.ts +5 -2
- package/lib/sandbox/control/server.ts +319 -37
- package/lib/sandbox/control/state.ts +6 -3
- package/lib/sandbox/control/task-view.ts +240 -0
- package/lib/sandbox/engines/authority.ts +365 -0
- package/lib/sandbox/engines/docker-exact-discovery.ts +132 -0
- package/lib/sandbox/index.ts +7 -0
- package/lib/sandbox/recovery.ts +21 -1
- package/lib/sandbox/workspace-view.ts +9 -3
- package/lib/sandbox/worktree-safety.ts +4 -1
- package/lib/server/index.ts +10 -0
- package/lib/task/artifact-lifecycle.ts +38 -16
- package/lib/task/artifact-operations.ts +626 -0
- package/lib/task/artifact-repair-intent.ts +71 -0
- package/lib/task/artifact-schema.ts +192 -0
- package/lib/task/capabilities.ts +70 -1
- package/lib/task/control-authority.ts +11 -1
- package/lib/task/create-service.ts +131 -6
- package/lib/task/create.ts +27 -0
- package/lib/task/events.ts +161 -65
- package/lib/task/index.ts +16 -3
- package/lib/task/local-artifact-finalization.ts +87 -218
- package/lib/task/orchestration.ts +172 -49
- package/lib/task/qualification-audit.ts +599 -0
- package/lib/task/qualification-confirmation.ts +117 -0
- package/lib/task/qualification-intents.ts +150 -0
- package/lib/task/review-artifacts.ts +21 -22
- package/lib/task/review-finalization.ts +133 -4
- package/lib/task/sections.ts +6 -4
- package/lib/task/verification-config.ts +12 -0
- package/lib/task/verification-engine.ts +55 -4
- package/package.json +6 -1
- package/templates/.agents/rules/README.en.md +2 -0
- package/templates/.agents/rules/README.zh-CN.md +2 -0
- package/templates/.agents/rules/decision-qualification.en.md +22 -0
- package/templates/.agents/rules/decision-qualification.zh-CN.md +22 -0
- package/templates/.agents/rules/evidence-reporting.en.md +28 -0
- package/templates/.agents/rules/evidence-reporting.zh-CN.md +28 -0
- package/templates/.agents/rules/label-milestone-setup.en.md +7 -7
- package/templates/.agents/rules/label-milestone-setup.zh-CN.md +7 -7
- package/templates/.agents/rules/local-artifact-repair.en.md +5 -1
- package/templates/.agents/rules/local-artifact-repair.zh-CN.md +5 -1
- package/templates/.agents/rules/security-alerts.en.md +8 -8
- package/templates/.agents/rules/security-alerts.zh-CN.md +8 -8
- package/templates/.agents/skills/analyze-task/SKILL.en.md +15 -2
- package/templates/.agents/skills/analyze-task/SKILL.zh-CN.md +19 -2
- package/templates/.agents/skills/analyze-task/config/verify.en.json +1 -12
- package/templates/.agents/skills/analyze-task/config/verify.zh-CN.json +1 -12
- package/templates/.agents/skills/close-codescan/SKILL.en.md +2 -2
- package/templates/.agents/skills/close-codescan/SKILL.zh-CN.md +2 -2
- package/templates/.agents/skills/close-dependabot/SKILL.en.md +2 -2
- package/templates/.agents/skills/close-dependabot/SKILL.zh-CN.md +2 -2
- package/templates/.agents/skills/code-task/SKILL.en.md +14 -1
- package/templates/.agents/skills/code-task/SKILL.zh-CN.md +14 -1
- package/templates/.agents/skills/code-task/config/verify.en.json +5 -14
- package/templates/.agents/skills/code-task/config/verify.zh-CN.json +5 -14
- package/templates/.agents/skills/code-task/reference/code-rules.en.md +5 -4
- package/templates/.agents/skills/code-task/reference/code-rules.zh-CN.md +5 -4
- package/templates/.agents/skills/code-task/reference/dual-mode.en.md +1 -1
- package/templates/.agents/skills/code-task/reference/dual-mode.zh-CN.md +1 -1
- package/templates/.agents/skills/code-task/reference/fix-mode.en.md +3 -1
- package/templates/.agents/skills/code-task/reference/fix-mode.zh-CN.md +3 -1
- package/templates/.agents/skills/code-task/reference/report-template.en.md +42 -15
- package/templates/.agents/skills/code-task/reference/report-template.zh-CN.md +39 -12
- package/templates/.agents/skills/complete-manual-validation/SKILL.en.md +5 -1
- package/templates/.agents/skills/complete-manual-validation/SKILL.zh-CN.md +5 -1
- package/templates/.agents/skills/complete-manual-validation/reference/report-template.en.md +2 -0
- package/templates/.agents/skills/complete-manual-validation/reference/report-template.zh-CN.md +2 -0
- package/templates/.agents/skills/complete-task/SKILL.en.md +9 -22
- package/templates/.agents/skills/complete-task/SKILL.zh-CN.md +9 -22
- package/templates/.agents/skills/create-task/SKILL.en.md +8 -0
- package/templates/.agents/skills/create-task/SKILL.zh-CN.md +7 -0
- package/templates/.agents/skills/import-codescan/SKILL.en.md +1 -1
- package/templates/.agents/skills/import-codescan/SKILL.zh-CN.md +1 -1
- package/templates/.agents/skills/import-dependabot/SKILL.en.md +1 -1
- package/templates/.agents/skills/import-dependabot/SKILL.zh-CN.md +1 -1
- package/templates/.agents/skills/init-labels/SKILL.en.md +8 -8
- package/templates/.agents/skills/init-labels/SKILL.zh-CN.md +8 -8
- package/templates/.agents/skills/init-milestones/SKILL.en.md +9 -11
- package/templates/.agents/skills/init-milestones/SKILL.zh-CN.md +9 -11
- package/templates/.agents/skills/plan-task/SKILL.en.md +14 -1
- package/templates/.agents/skills/plan-task/SKILL.zh-CN.md +16 -1
- package/templates/.agents/skills/plan-task/config/verify.en.json +4 -14
- package/templates/.agents/skills/plan-task/config/verify.zh-CN.json +4 -14
- package/templates/.agents/skills/review-analysis/SKILL.en.md +14 -1
- package/templates/.agents/skills/review-analysis/SKILL.zh-CN.md +14 -1
- package/templates/.agents/skills/review-analysis/config/verify.en.json +1 -18
- package/templates/.agents/skills/review-analysis/config/verify.zh-CN.json +1 -18
- package/templates/.agents/skills/review-analysis/reference/report-template.en.md +50 -23
- package/templates/.agents/skills/review-analysis/reference/report-template.zh-CN.md +45 -18
- package/templates/.agents/skills/review-code/SKILL.en.md +14 -1
- package/templates/.agents/skills/review-code/SKILL.zh-CN.md +14 -1
- package/templates/.agents/skills/review-code/config/verify.en.json +1 -23
- package/templates/.agents/skills/review-code/config/verify.zh-CN.json +1 -23
- package/templates/.agents/skills/review-code/reference/report-template.en.md +49 -22
- package/templates/.agents/skills/review-code/reference/report-template.zh-CN.md +45 -18
- package/templates/.agents/skills/review-plan/SKILL.en.md +14 -1
- package/templates/.agents/skills/review-plan/SKILL.zh-CN.md +14 -1
- package/templates/.agents/skills/review-plan/config/verify.en.json +1 -18
- package/templates/.agents/skills/review-plan/config/verify.zh-CN.json +1 -18
- package/templates/.agents/skills/review-plan/reference/report-template.en.md +49 -22
- package/templates/.agents/skills/review-plan/reference/report-template.zh-CN.md +45 -18
- package/templates/.agents/skills/review-pr/SKILL.en.md +5 -1
- package/templates/.agents/skills/review-pr/SKILL.zh-CN.md +5 -1
- package/templates/.agents/skills/review-pr/reference/report-template.en.md +4 -3
- package/templates/.agents/skills/review-pr/reference/report-template.zh-CN.md +4 -3
- package/templates/.agents/skills/run-manual-validation/SKILL.en.md +5 -1
- package/templates/.agents/skills/run-manual-validation/SKILL.zh-CN.md +5 -1
- package/templates/.agents/skills/run-manual-validation/reference/report-template.en.md +3 -1
- package/templates/.agents/skills/run-manual-validation/reference/report-template.zh-CN.md +3 -1
- package/templates/.agents/skills/test/SKILL.en.md +13 -2
- package/templates/.agents/skills/test/SKILL.zh-CN.md +13 -2
- package/templates/.agents/skills/update-agent-infra/scripts/sync-templates.js +14 -0
- package/templates/.agents/templates/task.en.md +6 -0
- package/templates/.agents/templates/task.zh-CN.md +6 -0
- package/templates/.agents/scripts/security-alerts.github.sh +0 -151
- package/templates/.agents/scripts/security-alerts.sh +0 -31
- package/templates/.agents/skills/init-labels/scripts/init-labels.github.sh +0 -146
- package/templates/.agents/skills/init-labels/scripts/init-labels.sh +0 -32
- package/templates/.agents/skills/init-milestones/scripts/init-milestones.github.sh +0 -294
- package/templates/.agents/skills/init-milestones/scripts/init-milestones.sh +0 -6
package/bin/cli.ts
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { VERSION } from '../lib/version.ts';
|
|
3
|
+
import {
|
|
4
|
+
formatTaskViewDiagnostic,
|
|
5
|
+
guardTaskOperation,
|
|
6
|
+
TaskViewOperationError
|
|
7
|
+
} from '../lib/internal/task-operation-registry.ts';
|
|
8
|
+
import { PUBLIC_CLI_COMMAND_ALIASES } from '../lib/internal/cli-route-inventory.ts';
|
|
3
9
|
|
|
4
10
|
// Node.js version check
|
|
5
11
|
const [major = 0, minor = 0] = process.versions.node.split('.').map((part) => parseInt(part, 10));
|
|
@@ -15,7 +21,7 @@ const USAGE = `agent-infra ${VERSION} - bootstrap AI collaboration infrastructur
|
|
|
15
21
|
Usage: ai <command> [options]
|
|
16
22
|
|
|
17
23
|
Commands:
|
|
18
|
-
agent-client List,
|
|
24
|
+
agent-client List, status, enable, disable, or configure Agent Clients
|
|
19
25
|
cp <ssh-alias> Copy local clipboard image to a remote macOS clipboard or Linux sandbox over SSH
|
|
20
26
|
data Capture, verify, audit, repair, and export process data
|
|
21
27
|
decide Record a ruling; code-stage decisions require explicit implementation intent
|
|
@@ -43,16 +49,27 @@ Examples:
|
|
|
43
49
|
npx @fitlab-ai/agent-infra init
|
|
44
50
|
`;
|
|
45
51
|
|
|
46
|
-
const COMMAND_ALIASES: Record<string, string> = {
|
|
47
|
-
s: 'sandbox',
|
|
48
|
-
t: 'task'
|
|
49
|
-
};
|
|
50
|
-
|
|
51
52
|
const rawCommand = process.argv[2] || '';
|
|
52
|
-
const command = Object.hasOwn(
|
|
53
|
-
?
|
|
53
|
+
const command = Object.hasOwn(PUBLIC_CLI_COMMAND_ALIASES, rawCommand)
|
|
54
|
+
? PUBLIC_CLI_COMMAND_ALIASES[rawCommand as keyof typeof PUBLIC_CLI_COMMAND_ALIASES]
|
|
54
55
|
: rawCommand;
|
|
55
56
|
|
|
57
|
+
let taskViewGuardFailed = false;
|
|
58
|
+
try {
|
|
59
|
+
const guard = guardTaskOperation('public', command ?? '', process.argv.slice(3));
|
|
60
|
+
if (guard.taskView && guard.descriptor.effect === 'diagnostic') {
|
|
61
|
+
process.stderr.write(formatTaskViewDiagnostic(guard.taskView));
|
|
62
|
+
}
|
|
63
|
+
} catch (error) {
|
|
64
|
+
taskViewGuardFailed = true;
|
|
65
|
+
if (error instanceof TaskViewOperationError) {
|
|
66
|
+
process.stderr.write(`${error.message}\n`);
|
|
67
|
+
process.exitCode = error.exitCode;
|
|
68
|
+
} else {
|
|
69
|
+
throw error;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
56
73
|
function errorMessage(error: unknown): string {
|
|
57
74
|
return error instanceof Error ? error.message : String(error);
|
|
58
75
|
}
|
|
@@ -73,7 +90,7 @@ async function importCommand(importPath: string) {
|
|
|
73
90
|
}
|
|
74
91
|
}
|
|
75
92
|
|
|
76
|
-
switch (command) {
|
|
93
|
+
if (!taskViewGuardFailed) switch (command) {
|
|
77
94
|
case 'agent-client': {
|
|
78
95
|
const imported = await importCommand('../lib/agent-client.ts');
|
|
79
96
|
if (!imported) break;
|
package/dist/bin/cli.js
CHANGED
|
@@ -8,6 +8,8 @@ var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExte
|
|
|
8
8
|
return path;
|
|
9
9
|
};
|
|
10
10
|
import { VERSION } from '../lib/version.js';
|
|
11
|
+
import { formatTaskViewDiagnostic, guardTaskOperation, TaskViewOperationError } from '../lib/internal/task-operation-registry.js';
|
|
12
|
+
import { PUBLIC_CLI_COMMAND_ALIASES } from '../lib/internal/cli-route-inventory.js';
|
|
11
13
|
// Node.js version check
|
|
12
14
|
const [major = 0, minor = 0] = process.versions.node.split('.').map((part) => parseInt(part, 10));
|
|
13
15
|
if (major < 22 || (major === 22 && minor < 9)) {
|
|
@@ -19,7 +21,7 @@ const USAGE = `agent-infra ${VERSION} - bootstrap AI collaboration infrastructur
|
|
|
19
21
|
Usage: ai <command> [options]
|
|
20
22
|
|
|
21
23
|
Commands:
|
|
22
|
-
agent-client List,
|
|
24
|
+
agent-client List, status, enable, disable, or configure Agent Clients
|
|
23
25
|
cp <ssh-alias> Copy local clipboard image to a remote macOS clipboard or Linux sandbox over SSH
|
|
24
26
|
data Capture, verify, audit, repair, and export process data
|
|
25
27
|
decide Record a ruling; code-stage decisions require explicit implementation intent
|
|
@@ -46,14 +48,27 @@ Examples:
|
|
|
46
48
|
cd my-project && ai init
|
|
47
49
|
npx @fitlab-ai/agent-infra init
|
|
48
50
|
`;
|
|
49
|
-
const COMMAND_ALIASES = {
|
|
50
|
-
s: 'sandbox',
|
|
51
|
-
t: 'task'
|
|
52
|
-
};
|
|
53
51
|
const rawCommand = process.argv[2] || '';
|
|
54
|
-
const command = Object.hasOwn(
|
|
55
|
-
?
|
|
52
|
+
const command = Object.hasOwn(PUBLIC_CLI_COMMAND_ALIASES, rawCommand)
|
|
53
|
+
? PUBLIC_CLI_COMMAND_ALIASES[rawCommand]
|
|
56
54
|
: rawCommand;
|
|
55
|
+
let taskViewGuardFailed = false;
|
|
56
|
+
try {
|
|
57
|
+
const guard = guardTaskOperation('public', command ?? '', process.argv.slice(3));
|
|
58
|
+
if (guard.taskView && guard.descriptor.effect === 'diagnostic') {
|
|
59
|
+
process.stderr.write(formatTaskViewDiagnostic(guard.taskView));
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
catch (error) {
|
|
63
|
+
taskViewGuardFailed = true;
|
|
64
|
+
if (error instanceof TaskViewOperationError) {
|
|
65
|
+
process.stderr.write(`${error.message}\n`);
|
|
66
|
+
process.exitCode = error.exitCode;
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
throw error;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
57
72
|
function errorMessage(error) {
|
|
58
73
|
return error instanceof Error ? error.message : String(error);
|
|
59
74
|
}
|
|
@@ -71,164 +86,165 @@ async function importCommand(importPath) {
|
|
|
71
86
|
throw error;
|
|
72
87
|
}
|
|
73
88
|
}
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
process.
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
}
|
|
88
|
-
case 'cp': {
|
|
89
|
-
const imported = await importCommand('../lib/cp.ts');
|
|
90
|
-
if (!imported)
|
|
91
|
-
break;
|
|
92
|
-
const { cmdCp } = imported;
|
|
93
|
-
const code = await cmdCp(process.argv.slice(3)).catch((e) => {
|
|
94
|
-
process.stderr.write(`Error: ${errorMessage(e)}\n`);
|
|
95
|
-
return 1;
|
|
96
|
-
});
|
|
97
|
-
if (code)
|
|
98
|
-
process.exitCode = code;
|
|
99
|
-
break;
|
|
100
|
-
}
|
|
101
|
-
case 'data': {
|
|
102
|
-
const imported = await importCommand('../lib/process-data/index.ts');
|
|
103
|
-
if (!imported)
|
|
104
|
-
break;
|
|
105
|
-
const { cmdData } = imported;
|
|
106
|
-
const code = await cmdData(process.argv.slice(3)).catch((e) => {
|
|
107
|
-
process.stderr.write(`Error: ${errorMessage(e)}\n`);
|
|
108
|
-
return 1;
|
|
109
|
-
});
|
|
110
|
-
if (code)
|
|
111
|
-
process.exitCode = code;
|
|
112
|
-
break;
|
|
113
|
-
}
|
|
114
|
-
case 'decide': {
|
|
115
|
-
const imported = await importCommand('../lib/decide.ts');
|
|
116
|
-
if (!imported)
|
|
89
|
+
if (!taskViewGuardFailed)
|
|
90
|
+
switch (command) {
|
|
91
|
+
case 'agent-client': {
|
|
92
|
+
const imported = await importCommand('../lib/agent-client.ts');
|
|
93
|
+
if (!imported)
|
|
94
|
+
break;
|
|
95
|
+
const { cmdAgentClient } = imported;
|
|
96
|
+
const code = await cmdAgentClient(process.argv.slice(3)).catch((e) => {
|
|
97
|
+
process.stderr.write(`Error: ${errorMessage(e)}\n`);
|
|
98
|
+
return 1;
|
|
99
|
+
});
|
|
100
|
+
if (code)
|
|
101
|
+
process.exitCode = code;
|
|
117
102
|
break;
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
103
|
+
}
|
|
104
|
+
case 'cp': {
|
|
105
|
+
const imported = await importCommand('../lib/cp.ts');
|
|
106
|
+
if (!imported)
|
|
107
|
+
break;
|
|
108
|
+
const { cmdCp } = imported;
|
|
109
|
+
const code = await cmdCp(process.argv.slice(3)).catch((e) => {
|
|
110
|
+
process.stderr.write(`Error: ${errorMessage(e)}\n`);
|
|
111
|
+
return 1;
|
|
112
|
+
});
|
|
113
|
+
if (code)
|
|
114
|
+
process.exitCode = code;
|
|
125
115
|
break;
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
process.
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
116
|
+
}
|
|
117
|
+
case 'data': {
|
|
118
|
+
const imported = await importCommand('../lib/process-data/index.ts');
|
|
119
|
+
if (!imported)
|
|
120
|
+
break;
|
|
121
|
+
const { cmdData } = imported;
|
|
122
|
+
const code = await cmdData(process.argv.slice(3)).catch((e) => {
|
|
123
|
+
process.stderr.write(`Error: ${errorMessage(e)}\n`);
|
|
124
|
+
return 1;
|
|
125
|
+
});
|
|
126
|
+
if (code)
|
|
127
|
+
process.exitCode = code;
|
|
136
128
|
break;
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
case 'run': {
|
|
145
|
-
const imported = await importCommand('../lib/run/index.ts');
|
|
146
|
-
if (!imported)
|
|
129
|
+
}
|
|
130
|
+
case 'decide': {
|
|
131
|
+
const imported = await importCommand('../lib/decide.ts');
|
|
132
|
+
if (!imported)
|
|
133
|
+
break;
|
|
134
|
+
const { cmdDecide } = imported;
|
|
135
|
+
await cmdDecide(process.argv.slice(3));
|
|
147
136
|
break;
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
process.stderr.write(`Error: ${errorMessage(e)}\n`);
|
|
159
|
-
process.exit(1);
|
|
160
|
-
});
|
|
161
|
-
break;
|
|
162
|
-
}
|
|
163
|
-
case 'server': {
|
|
164
|
-
const imported = await importCommand('../lib/server/index.ts');
|
|
165
|
-
if (!imported)
|
|
166
|
-
break;
|
|
167
|
-
const { runServer } = imported;
|
|
168
|
-
await runServer(process.argv.slice(3)).catch((e) => {
|
|
169
|
-
process.stderr.write(`Error: ${errorMessage(e)}\n`);
|
|
170
|
-
process.exit(1);
|
|
171
|
-
});
|
|
172
|
-
break;
|
|
173
|
-
}
|
|
174
|
-
case 'task': {
|
|
175
|
-
const imported = await importCommand('../lib/task/index.ts');
|
|
176
|
-
if (!imported)
|
|
177
|
-
break;
|
|
178
|
-
const { runTask } = imported;
|
|
179
|
-
await runTask(process.argv.slice(3)).catch((e) => {
|
|
180
|
-
process.stderr.write(`Error: ${errorMessage(e)}\n`);
|
|
181
|
-
process.exit(1);
|
|
182
|
-
});
|
|
183
|
-
break;
|
|
184
|
-
}
|
|
185
|
-
case 'update': {
|
|
186
|
-
const imported = await importCommand('../lib/self-update.ts');
|
|
187
|
-
if (!imported)
|
|
137
|
+
}
|
|
138
|
+
case 'init': {
|
|
139
|
+
const imported = await importCommand('../lib/init.ts');
|
|
140
|
+
if (!imported)
|
|
141
|
+
break;
|
|
142
|
+
const { cmdInit } = imported;
|
|
143
|
+
await cmdInit().catch((e) => {
|
|
144
|
+
process.stderr.write(`Error: ${errorMessage(e)}\n`);
|
|
145
|
+
process.exitCode = 1;
|
|
146
|
+
});
|
|
188
147
|
break;
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
148
|
+
}
|
|
149
|
+
case 'merge': {
|
|
150
|
+
const imported = await importCommand('../lib/merge.ts');
|
|
151
|
+
if (!imported)
|
|
152
|
+
break;
|
|
153
|
+
const { cmdMerge } = imported;
|
|
154
|
+
await cmdMerge(process.argv.slice(3)).catch((e) => {
|
|
155
|
+
process.stderr.write(`Error: ${errorMessage(e)}\n`);
|
|
156
|
+
process.exitCode = 1;
|
|
157
|
+
});
|
|
158
|
+
break;
|
|
159
|
+
}
|
|
160
|
+
case 'run': {
|
|
161
|
+
const imported = await importCommand('../lib/run/index.ts');
|
|
162
|
+
if (!imported)
|
|
163
|
+
break;
|
|
164
|
+
const { cmdRun } = imported;
|
|
165
|
+
await cmdRun(process.argv.slice(3));
|
|
166
|
+
break;
|
|
167
|
+
}
|
|
168
|
+
case 'sandbox': {
|
|
169
|
+
const imported = await importCommand('../lib/sandbox/index.ts');
|
|
170
|
+
if (!imported)
|
|
171
|
+
break;
|
|
172
|
+
const { runSandbox } = imported;
|
|
173
|
+
await runSandbox(process.argv.slice(3)).catch((e) => {
|
|
174
|
+
process.stderr.write(`Error: ${errorMessage(e)}\n`);
|
|
175
|
+
process.exit(1);
|
|
176
|
+
});
|
|
177
|
+
break;
|
|
178
|
+
}
|
|
179
|
+
case 'server': {
|
|
180
|
+
const imported = await importCommand('../lib/server/index.ts');
|
|
181
|
+
if (!imported)
|
|
182
|
+
break;
|
|
183
|
+
const { runServer } = imported;
|
|
184
|
+
await runServer(process.argv.slice(3)).catch((e) => {
|
|
185
|
+
process.stderr.write(`Error: ${errorMessage(e)}\n`);
|
|
186
|
+
process.exit(1);
|
|
187
|
+
});
|
|
202
188
|
break;
|
|
203
|
-
const { cmdSync } = imported;
|
|
204
|
-
await cmdSync().catch((e) => {
|
|
205
|
-
process.stderr.write(`Error: ${errorMessage(e)}\n`);
|
|
206
|
-
process.exitCode = 1;
|
|
207
|
-
});
|
|
208
|
-
break;
|
|
209
|
-
}
|
|
210
|
-
case 'version': {
|
|
211
|
-
if (process.argv[3] === '--raw') {
|
|
212
|
-
console.log(VERSION);
|
|
213
189
|
}
|
|
214
|
-
|
|
190
|
+
case 'task': {
|
|
191
|
+
const imported = await importCommand('../lib/task/index.ts');
|
|
192
|
+
if (!imported)
|
|
193
|
+
break;
|
|
194
|
+
const { runTask } = imported;
|
|
195
|
+
await runTask(process.argv.slice(3)).catch((e) => {
|
|
196
|
+
process.stderr.write(`Error: ${errorMessage(e)}\n`);
|
|
197
|
+
process.exit(1);
|
|
198
|
+
});
|
|
199
|
+
break;
|
|
200
|
+
}
|
|
201
|
+
case 'update': {
|
|
202
|
+
const imported = await importCommand('../lib/self-update.ts');
|
|
203
|
+
if (!imported)
|
|
204
|
+
break;
|
|
205
|
+
const { cmdUpdate } = imported;
|
|
206
|
+
const code = await cmdUpdate().catch((e) => {
|
|
207
|
+
process.stderr.write(`Error: ${errorMessage(e)}\n`);
|
|
208
|
+
process.exitCode = 1;
|
|
209
|
+
return 1;
|
|
210
|
+
});
|
|
211
|
+
if (code !== 0)
|
|
212
|
+
process.exitCode = code;
|
|
213
|
+
break;
|
|
214
|
+
}
|
|
215
|
+
case 'sync': {
|
|
216
|
+
const imported = await importCommand('../lib/update.ts');
|
|
217
|
+
if (!imported)
|
|
218
|
+
break;
|
|
219
|
+
const { cmdSync } = imported;
|
|
220
|
+
await cmdSync().catch((e) => {
|
|
221
|
+
process.stderr.write(`Error: ${errorMessage(e)}\n`);
|
|
222
|
+
process.exitCode = 1;
|
|
223
|
+
});
|
|
224
|
+
break;
|
|
225
|
+
}
|
|
226
|
+
case 'version': {
|
|
227
|
+
if (process.argv[3] === '--raw') {
|
|
228
|
+
console.log(VERSION);
|
|
229
|
+
}
|
|
230
|
+
else {
|
|
231
|
+
console.log(`agent-infra ${VERSION}`);
|
|
232
|
+
}
|
|
233
|
+
break;
|
|
234
|
+
}
|
|
235
|
+
case '--version':
|
|
236
|
+
case '-v': {
|
|
215
237
|
console.log(`agent-infra ${VERSION}`);
|
|
238
|
+
break;
|
|
216
239
|
}
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
240
|
+
case 'help':
|
|
241
|
+
case '':
|
|
242
|
+
process.stdout.write(USAGE);
|
|
243
|
+
break;
|
|
244
|
+
default:
|
|
245
|
+
process.stderr.write(`Unknown command: ${command}\n\n`);
|
|
246
|
+
process.stdout.write(USAGE);
|
|
247
|
+
process.exitCode = 1;
|
|
248
|
+
break;
|
|
223
249
|
}
|
|
224
|
-
case 'help':
|
|
225
|
-
case '':
|
|
226
|
-
process.stdout.write(USAGE);
|
|
227
|
-
break;
|
|
228
|
-
default:
|
|
229
|
-
process.stderr.write(`Unknown command: ${command}\n\n`);
|
|
230
|
-
process.stdout.write(USAGE);
|
|
231
|
-
process.exitCode = 1;
|
|
232
|
-
break;
|
|
233
|
-
}
|
|
234
250
|
//# sourceMappingURL=cli.js.map
|
package/dist/bin/internal-cli.js
CHANGED
|
@@ -1,11 +1,32 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
import { classifySandboxControlEnvironment } from '../lib/sandbox/control/client.js';
|
|
3
|
+
import { formatTaskViewDiagnostic, guardTaskOperation, TaskViewOperationError } from '../lib/internal/task-operation-registry.js';
|
|
4
|
+
import { INTERNAL_HANDLER_ROUTE_SELECTORS } from '../lib/internal/cli-route-inventory.js';
|
|
2
5
|
const [major = 0, minor = 0] = process.versions.node.split('.').map((part) => parseInt(part, 10));
|
|
3
6
|
if (major < 22 || (major === 22 && minor < 9)) {
|
|
4
7
|
process.stderr.write(`agent-infra-internal requires Node.js >= 22.9.0 (current: ${process.version})\n`);
|
|
5
8
|
process.exit(1);
|
|
6
9
|
}
|
|
7
10
|
const command = process.argv[2] || '';
|
|
11
|
+
const internalRouteRegistered = Object.hasOwn(INTERNAL_HANDLER_ROUTE_SELECTORS, command);
|
|
8
12
|
const taskControlCommand = command === 'task-lifecycle' || command === 'task-orchestration' || command === 'task-finalization';
|
|
13
|
+
let taskViewGuardFailed = false;
|
|
14
|
+
try {
|
|
15
|
+
const guard = guardTaskOperation('internal', command, process.argv.slice(3));
|
|
16
|
+
if (guard.taskView && guard.descriptor.effect === 'diagnostic') {
|
|
17
|
+
process.stderr.write(formatTaskViewDiagnostic(guard.taskView));
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
catch (error) {
|
|
21
|
+
taskViewGuardFailed = true;
|
|
22
|
+
if (error instanceof TaskViewOperationError) {
|
|
23
|
+
process.stderr.write(`${error.message}\n`);
|
|
24
|
+
process.exitCode = error.exitCode;
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
throw error;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
9
30
|
function taskControlTransportFailure(message) {
|
|
10
31
|
process.stdout.write(`${JSON.stringify({
|
|
11
32
|
status: 'failed', changed: false,
|
|
@@ -13,26 +34,12 @@ function taskControlTransportFailure(message) {
|
|
|
13
34
|
})}\n`);
|
|
14
35
|
process.exit(1);
|
|
15
36
|
}
|
|
16
|
-
if (taskControlCommand) {
|
|
17
|
-
const
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
'AGENT_INFRA_CONTROL_TOKEN', 'AGENT_INFRA_CONTROL_GENERATION',
|
|
21
|
-
'AGENT_INFRA_CONTROL_DIR', 'AGENT_INFRA_CONTROL_STATUS_DIR'
|
|
22
|
-
];
|
|
23
|
-
const hasControlMarker = controlKeys.some((key) => Boolean(env[key]))
|
|
24
|
-
|| Boolean(env.AGENT_INFRA_CONTROL_CONTROLLER_BINDING);
|
|
25
|
-
const taskBindingMarker = hasControlMarker && Boolean(env.AGENT_INFRA_TASK_ID);
|
|
26
|
-
const hasCompleteClientConfig = controlKeys.every((key) => Boolean(env[key]))
|
|
27
|
-
&& !env.AGENT_INFRA_CONTROL_CONTROLLER_BINDING
|
|
28
|
-
&& (!taskBindingMarker || Boolean(env.AGENT_INFRA_RUNTIME_DIR));
|
|
29
|
-
if (executorMarked) {
|
|
30
|
-
taskControlTransportFailure('executor context is only valid for sandbox-control execute');
|
|
31
|
-
}
|
|
32
|
-
if ((hasControlMarker || taskBindingMarker) && !hasCompleteClientConfig) {
|
|
33
|
-
taskControlTransportFailure('sandbox client control configuration is incomplete or conflicting');
|
|
37
|
+
if (!taskViewGuardFailed && taskControlCommand) {
|
|
38
|
+
const environment = classifySandboxControlEnvironment();
|
|
39
|
+
if (environment.kind === 'invalid') {
|
|
40
|
+
taskControlTransportFailure(environment.message ?? 'sandbox client control configuration is invalid');
|
|
34
41
|
}
|
|
35
|
-
if (
|
|
42
|
+
if (environment.kind === 'controlled') {
|
|
36
43
|
const { sandboxControl } = await import('../lib/internal/sandbox-control.js');
|
|
37
44
|
await sandboxControl(['client', command, ...process.argv.slice(3)]);
|
|
38
45
|
}
|
|
@@ -56,7 +63,7 @@ if (taskControlCommand) {
|
|
|
56
63
|
}
|
|
57
64
|
}
|
|
58
65
|
}
|
|
59
|
-
else
|
|
66
|
+
else if (!taskViewGuardFailed && internalRouteRegistered)
|
|
60
67
|
switch (command) {
|
|
61
68
|
case 'task-create': {
|
|
62
69
|
const { taskCreate } = await import('../lib/internal/task-create.js');
|
|
@@ -138,6 +145,16 @@ else
|
|
|
138
145
|
await platformChecks(process.argv.slice(3));
|
|
139
146
|
break;
|
|
140
147
|
}
|
|
148
|
+
case 'platform-security': {
|
|
149
|
+
const { platformSecurity } = await import('../lib/internal/platform-security.js');
|
|
150
|
+
await platformSecurity(process.argv.slice(3));
|
|
151
|
+
break;
|
|
152
|
+
}
|
|
153
|
+
case 'platform-metadata': {
|
|
154
|
+
const { platformMetadata } = await import('../lib/internal/platform-metadata.js');
|
|
155
|
+
await platformMetadata(process.argv.slice(3));
|
|
156
|
+
break;
|
|
157
|
+
}
|
|
141
158
|
case 'task-context': {
|
|
142
159
|
const { taskContext } = await import('../lib/internal/task-context.js');
|
|
143
160
|
taskContext(process.argv.slice(3));
|
|
@@ -148,6 +165,11 @@ else
|
|
|
148
165
|
await taskLedger(process.argv.slice(3));
|
|
149
166
|
break;
|
|
150
167
|
}
|
|
168
|
+
case 'task-qualification': {
|
|
169
|
+
const { taskQualification } = await import('../lib/internal/task-qualification.js');
|
|
170
|
+
await taskQualification(process.argv.slice(3));
|
|
171
|
+
break;
|
|
172
|
+
}
|
|
151
173
|
case 'task-warning': {
|
|
152
174
|
const { taskWarning } = await import('../lib/internal/task-warning.js');
|
|
153
175
|
await taskWarning(process.argv.slice(3));
|
|
@@ -226,5 +248,4 @@ else
|
|
|
226
248
|
})}\n`);
|
|
227
249
|
process.exitCode = 1;
|
|
228
250
|
}
|
|
229
|
-
export {};
|
|
230
251
|
//# sourceMappingURL=internal-cli.js.map
|
package/dist/lib/agent-client.js
CHANGED
|
@@ -6,6 +6,8 @@ import { listAgentClientAdapters } from './agent-clients/registry.js';
|
|
|
6
6
|
import { AGENT_CLIENT_IDS, isAgentClientId } from './agent-clients/types.js';
|
|
7
7
|
import { closePrompt, multiSelect } from './prompt.js';
|
|
8
8
|
import { resolveTemplateDir } from './paths.js';
|
|
9
|
+
import { PUBLIC_CLI_ROUTE_SELECTORS } from './internal/cli-route-inventory.js';
|
|
10
|
+
const AGENT_CLIENT_OPERATIONS = PUBLIC_CLI_ROUTE_SELECTORS['agent-client'];
|
|
9
11
|
const USAGE = `Usage: ai agent-client <operation>
|
|
10
12
|
|
|
11
13
|
Operations:
|
|
@@ -79,6 +81,9 @@ async function cmdAgentClient(args) {
|
|
|
79
81
|
process.stdout.write(USAGE);
|
|
80
82
|
return 0;
|
|
81
83
|
}
|
|
84
|
+
if (!AGENT_CLIENT_OPERATIONS.includes(operation)) {
|
|
85
|
+
throw new AgentClientCommandError('AGENT_CLIENT_OPERATION_INVALID', `Unknown operation '${operation}'`);
|
|
86
|
+
}
|
|
82
87
|
if (operation === 'list') {
|
|
83
88
|
if (args.length !== 1) {
|
|
84
89
|
throw new AgentClientCommandError('AGENT_CLIENT_ARGUMENT_INVALID', 'list accepts no arguments');
|
|
@@ -5,6 +5,7 @@ import { normalizeCustomTUIs } from '../agent-clients/custom-tuis.js';
|
|
|
5
5
|
import { renderNextStepCommands } from '../agent-clients/next-steps.js';
|
|
6
6
|
import { getAgentClientModelSelection } from '../agent-clients/registry.js';
|
|
7
7
|
import { isAgentClientId } from '../agent-clients/types.js';
|
|
8
|
+
import { ensureInternalHandlerRoute, internalHandlerRoute } from './cli-route-inventory.js';
|
|
8
9
|
const USAGE = 'Usage: agent-infra-internal agent-client <next-steps|model-selection> [options]\n';
|
|
9
10
|
function failure(code, message) {
|
|
10
11
|
process.stdout.write(`${JSON.stringify({
|
|
@@ -21,7 +22,7 @@ function parseArgs(args) {
|
|
|
21
22
|
process.stdout.write(USAGE);
|
|
22
23
|
return null;
|
|
23
24
|
}
|
|
24
|
-
if (args[0]
|
|
25
|
+
if (!internalHandlerRoute('agent-client', 'next-steps', args[0] ?? '')) {
|
|
25
26
|
failure('AGENT_CLIENT_PAYLOAD_INVALID', "operation must be 'next-steps'");
|
|
26
27
|
return null;
|
|
27
28
|
}
|
|
@@ -72,7 +73,9 @@ function parseArgs(args) {
|
|
|
72
73
|
};
|
|
73
74
|
}
|
|
74
75
|
function agentClient(args = []) {
|
|
75
|
-
if (
|
|
76
|
+
if (!ensureInternalHandlerRoute('agent-client', args))
|
|
77
|
+
return;
|
|
78
|
+
if (internalHandlerRoute('agent-client', 'model-selection', args[0] ?? '')) {
|
|
76
79
|
const values = {};
|
|
77
80
|
const seen = new Set();
|
|
78
81
|
for (let index = 1; index < args.length; index += 1) {
|