@agentuity/cli 0.1.41 → 0.1.43
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/agent-detection.d.ts.map +1 -1
- package/dist/agent-detection.js +8 -2
- package/dist/agent-detection.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +9 -5
- package/dist/cli.js.map +1 -1
- package/dist/cmd/ai/index.d.ts.map +1 -1
- package/dist/cmd/ai/index.js +1 -8
- package/dist/cmd/ai/index.js.map +1 -1
- package/dist/cmd/ai/prompt/version.js +1 -1
- package/dist/cmd/ai/prompt/version.js.map +1 -1
- package/dist/cmd/auth/api.d.ts.map +1 -1
- package/dist/cmd/auth/api.js +4 -1
- package/dist/cmd/auth/api.js.map +1 -1
- package/dist/cmd/auth/ssh/api.js +2 -2
- package/dist/cmd/auth/ssh/api.js.map +1 -1
- package/dist/cmd/build/ast.d.ts.map +1 -1
- package/dist/cmd/build/ast.js +14 -13
- package/dist/cmd/build/ast.js.map +1 -1
- package/dist/cmd/build/entry-generator.d.ts.map +1 -1
- package/dist/cmd/build/entry-generator.js +137 -1
- package/dist/cmd/build/entry-generator.js.map +1 -1
- package/dist/cmd/build/patch/index.d.ts.map +1 -1
- package/dist/cmd/build/patch/index.js +3 -0
- package/dist/cmd/build/patch/index.js.map +1 -1
- package/dist/cmd/build/vite/index.d.ts +1 -0
- package/dist/cmd/build/vite/index.d.ts.map +1 -1
- package/dist/cmd/build/vite/index.js +1 -0
- package/dist/cmd/build/vite/index.js.map +1 -1
- package/dist/cmd/build/vite/metadata-generator.d.ts.map +1 -1
- package/dist/cmd/build/vite/metadata-generator.js +19 -9
- package/dist/cmd/build/vite/metadata-generator.js.map +1 -1
- package/dist/cmd/build/vite/public-asset-path-plugin.d.ts +46 -0
- package/dist/cmd/build/vite/public-asset-path-plugin.d.ts.map +1 -0
- package/dist/cmd/build/vite/public-asset-path-plugin.js +133 -0
- package/dist/cmd/build/vite/public-asset-path-plugin.js.map +1 -0
- package/dist/cmd/build/vite/registry-generator.d.ts.map +1 -1
- package/dist/cmd/build/vite/registry-generator.js +14 -5
- package/dist/cmd/build/vite/registry-generator.js.map +1 -1
- package/dist/cmd/build/vite/route-discovery.js +1 -1
- package/dist/cmd/build/vite/route-discovery.js.map +1 -1
- package/dist/cmd/build/vite/vite-asset-server-config.d.ts.map +1 -1
- package/dist/cmd/build/vite/vite-asset-server-config.js +17 -7
- package/dist/cmd/build/vite/vite-asset-server-config.js.map +1 -1
- package/dist/cmd/build/vite/vite-asset-server.d.ts.map +1 -1
- package/dist/cmd/build/vite/vite-asset-server.js +1 -1
- package/dist/cmd/build/vite/vite-asset-server.js.map +1 -1
- package/dist/cmd/build/vite/vite-builder.d.ts.map +1 -1
- package/dist/cmd/build/vite/vite-builder.js +13 -9
- package/dist/cmd/build/vite/vite-builder.js.map +1 -1
- package/dist/cmd/canary/index.d.ts.map +1 -1
- package/dist/cmd/canary/index.js +9 -1
- package/dist/cmd/canary/index.js.map +1 -1
- package/dist/cmd/cloud/db/create.d.ts.map +1 -1
- package/dist/cmd/cloud/db/create.js +2 -2
- package/dist/cmd/cloud/db/create.js.map +1 -1
- package/dist/cmd/cloud/db/delete.d.ts.map +1 -1
- package/dist/cmd/cloud/db/delete.js +2 -2
- package/dist/cmd/cloud/db/delete.js.map +1 -1
- package/dist/cmd/cloud/env/import.d.ts.map +1 -1
- package/dist/cmd/cloud/env/import.js +4 -1
- package/dist/cmd/cloud/env/import.js.map +1 -1
- package/dist/cmd/cloud/env/list.d.ts.map +1 -1
- package/dist/cmd/cloud/env/list.js +4 -1
- package/dist/cmd/cloud/env/list.js.map +1 -1
- package/dist/cmd/cloud/env/push.d.ts.map +1 -1
- package/dist/cmd/cloud/env/push.js +4 -1
- package/dist/cmd/cloud/env/push.js.map +1 -1
- package/dist/cmd/cloud/region/index.js +1 -1
- package/dist/cmd/cloud/region/index.js.map +1 -1
- package/dist/cmd/cloud/sandbox/snapshot/build.d.ts.map +1 -1
- package/dist/cmd/cloud/sandbox/snapshot/build.js +22 -10
- package/dist/cmd/cloud/sandbox/snapshot/build.js.map +1 -1
- package/dist/cmd/cloud/sandbox/snapshot/get.d.ts.map +1 -1
- package/dist/cmd/cloud/sandbox/snapshot/get.js +12 -2
- package/dist/cmd/cloud/sandbox/snapshot/get.js.map +1 -1
- package/dist/cmd/cloud/storage/create.d.ts.map +1 -1
- package/dist/cmd/cloud/storage/create.js +2 -2
- package/dist/cmd/cloud/storage/create.js.map +1 -1
- package/dist/cmd/cloud/storage/delete.d.ts.map +1 -1
- package/dist/cmd/cloud/storage/delete.js +2 -2
- package/dist/cmd/cloud/storage/delete.js.map +1 -1
- package/dist/cmd/dev/download.d.ts.map +1 -1
- package/dist/cmd/dev/download.js +9 -2
- package/dist/cmd/dev/download.js.map +1 -1
- package/dist/cmd/dev/index.js +1 -1
- package/dist/cmd/dev/index.js.map +1 -1
- package/dist/cmd/git/account/add.d.ts.map +1 -1
- package/dist/cmd/git/account/add.js +4 -3
- package/dist/cmd/git/account/add.js.map +1 -1
- package/dist/cmd/git/link.js +2 -2
- package/dist/cmd/git/link.js.map +1 -1
- package/dist/cmd/git/list.d.ts.map +1 -1
- package/dist/cmd/git/list.js +3 -2
- package/dist/cmd/git/list.js.map +1 -1
- package/dist/cmd/project/auth/init.js +1 -1
- package/dist/cmd/project/auth/init.js.map +1 -1
- package/dist/cmd/project/auth/shared.d.ts.map +1 -1
- package/dist/cmd/project/auth/shared.js +8 -3
- package/dist/cmd/project/auth/shared.js.map +1 -1
- package/dist/cmd/project/delete.d.ts.map +1 -1
- package/dist/cmd/project/delete.js +3 -2
- package/dist/cmd/project/delete.js.map +1 -1
- package/dist/cmd/project/reconcile.d.ts.map +1 -1
- package/dist/cmd/project/reconcile.js +9 -5
- package/dist/cmd/project/reconcile.js.map +1 -1
- package/dist/cmd/project/template-flow.d.ts.map +1 -1
- package/dist/cmd/project/template-flow.js +15 -5
- package/dist/cmd/project/template-flow.js.map +1 -1
- package/dist/cmd/support/report.d.ts.map +1 -1
- package/dist/cmd/support/report.js +58 -23
- package/dist/cmd/support/report.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +3 -2
- package/dist/config.js.map +1 -1
- package/dist/domain.d.ts.map +1 -1
- package/dist/domain.js +4 -3
- package/dist/domain.js.map +1 -1
- package/dist/internal-logger.d.ts +7 -0
- package/dist/internal-logger.d.ts.map +1 -1
- package/dist/internal-logger.js +82 -27
- package/dist/internal-logger.js.map +1 -1
- package/dist/repl.d.ts.map +1 -1
- package/dist/repl.js +31 -14
- package/dist/repl.js.map +1 -1
- package/dist/schema-parser.d.ts.map +1 -1
- package/dist/schema-parser.js +4 -1
- package/dist/schema-parser.js.map +1 -1
- package/dist/sound.d.ts.map +1 -1
- package/dist/sound.js +2 -1
- package/dist/sound.js.map +1 -1
- package/dist/steps.d.ts.map +1 -1
- package/dist/steps.js +13 -6
- package/dist/steps.js.map +1 -1
- package/dist/terminal.js +2 -0
- package/dist/terminal.js.map +1 -1
- package/dist/tsc-output-parser.d.ts +3 -0
- package/dist/tsc-output-parser.d.ts.map +1 -1
- package/dist/tsc-output-parser.js +32 -9
- package/dist/tsc-output-parser.js.map +1 -1
- package/dist/tui/prompt.d.ts.map +1 -1
- package/dist/tui/prompt.js +6 -2
- package/dist/tui/prompt.js.map +1 -1
- package/dist/tui.d.ts.map +1 -1
- package/dist/tui.js +26 -15
- package/dist/tui.js.map +1 -1
- package/dist/typescript-errors.d.ts.map +1 -1
- package/dist/typescript-errors.js +5 -2
- package/dist/typescript-errors.js.map +1 -1
- package/dist/utils/date.d.ts.map +1 -1
- package/dist/utils/date.js +5 -1
- package/dist/utils/date.js.map +1 -1
- package/dist/utils/deps.d.ts.map +1 -1
- package/dist/utils/deps.js +5 -3
- package/dist/utils/deps.js.map +1 -1
- package/dist/utils/detectSubagent.js +1 -1
- package/dist/utils/detectSubagent.js.map +1 -1
- package/package.json +8 -7
- package/src/agent-detection.ts +9 -2
- package/src/cli.ts +9 -5
- package/src/cmd/ai/index.ts +1 -8
- package/src/cmd/ai/prompt/version.ts +1 -1
- package/src/cmd/auth/api.ts +4 -1
- package/src/cmd/auth/ssh/api.ts +2 -2
- package/src/cmd/build/ast.ts +14 -13
- package/src/cmd/build/entry-generator.ts +137 -1
- package/src/cmd/build/patch/index.ts +3 -0
- package/src/cmd/build/vite/index.ts +1 -0
- package/src/cmd/build/vite/metadata-generator.ts +20 -9
- package/src/cmd/build/vite/public-asset-path-plugin.ts +167 -0
- package/src/cmd/build/vite/registry-generator.ts +14 -5
- package/src/cmd/build/vite/route-discovery.ts +1 -1
- package/src/cmd/build/vite/vite-asset-server-config.ts +19 -9
- package/src/cmd/build/vite/vite-asset-server.ts +3 -1
- package/src/cmd/build/vite/vite-builder.ts +22 -18
- package/src/cmd/canary/index.ts +9 -1
- package/src/cmd/cloud/db/create.ts +16 -17
- package/src/cmd/cloud/db/delete.ts +19 -20
- package/src/cmd/cloud/env/import.ts +6 -3
- package/src/cmd/cloud/env/list.ts +11 -9
- package/src/cmd/cloud/env/push.ts +6 -3
- package/src/cmd/cloud/region/index.ts +3 -3
- package/src/cmd/cloud/sandbox/snapshot/build.ts +42 -33
- package/src/cmd/cloud/sandbox/snapshot/get.ts +21 -15
- package/src/cmd/cloud/storage/create.ts +16 -17
- package/src/cmd/cloud/storage/delete.ts +19 -20
- package/src/cmd/dev/download.ts +10 -2
- package/src/cmd/dev/index.ts +4 -4
- package/src/cmd/git/account/add.ts +5 -4
- package/src/cmd/git/link.ts +2 -2
- package/src/cmd/git/list.ts +7 -6
- package/src/cmd/project/auth/init.ts +6 -6
- package/src/cmd/project/auth/shared.ts +8 -3
- package/src/cmd/project/delete.ts +3 -2
- package/src/cmd/project/reconcile.ts +9 -5
- package/src/cmd/project/template-flow.ts +15 -5
- package/src/cmd/support/report.ts +82 -28
- package/src/config.ts +3 -2
- package/src/domain.ts +4 -3
- package/src/internal-logger.ts +91 -26
- package/src/repl.ts +27 -14
- package/src/schema-parser.ts +4 -1
- package/src/sound.ts +2 -1
- package/src/steps.ts +11 -6
- package/src/terminal.ts +2 -1
- package/src/tsc-output-parser.ts +61 -38
- package/src/tui/prompt.ts +6 -2
- package/src/tui.ts +26 -17
- package/src/typescript-errors.ts +5 -2
- package/src/utils/date.ts +5 -1
- package/src/utils/deps.ts +5 -3
- package/src/utils/detectSubagent.ts +1 -1
- package/dist/cmd/ai/cadence/index.d.ts +0 -3
- package/dist/cmd/ai/cadence/index.d.ts.map +0 -1
- package/dist/cmd/ai/cadence/index.js +0 -35
- package/dist/cmd/ai/cadence/index.js.map +0 -1
- package/dist/cmd/ai/cadence/list.d.ts +0 -3
- package/dist/cmd/ai/cadence/list.d.ts.map +0 -1
- package/dist/cmd/ai/cadence/list.js +0 -167
- package/dist/cmd/ai/cadence/list.js.map +0 -1
- package/dist/cmd/ai/cadence/pause.d.ts +0 -3
- package/dist/cmd/ai/cadence/pause.d.ts.map +0 -1
- package/dist/cmd/ai/cadence/pause.js +0 -103
- package/dist/cmd/ai/cadence/pause.js.map +0 -1
- package/dist/cmd/ai/cadence/resume.d.ts +0 -3
- package/dist/cmd/ai/cadence/resume.d.ts.map +0 -1
- package/dist/cmd/ai/cadence/resume.js +0 -106
- package/dist/cmd/ai/cadence/resume.js.map +0 -1
- package/dist/cmd/ai/cadence/status.d.ts +0 -3
- package/dist/cmd/ai/cadence/status.d.ts.map +0 -1
- package/dist/cmd/ai/cadence/status.js +0 -129
- package/dist/cmd/ai/cadence/status.js.map +0 -1
- package/dist/cmd/ai/cadence/stop.d.ts +0 -3
- package/dist/cmd/ai/cadence/stop.d.ts.map +0 -1
- package/dist/cmd/ai/cadence/stop.js +0 -107
- package/dist/cmd/ai/cadence/stop.js.map +0 -1
- package/dist/cmd/ai/cadence/util.d.ts +0 -44
- package/dist/cmd/ai/cadence/util.d.ts.map +0 -1
- package/dist/cmd/ai/cadence/util.js +0 -52
- package/dist/cmd/ai/cadence/util.js.map +0 -1
- package/src/cmd/ai/cadence/index.ts +0 -36
- package/src/cmd/ai/cadence/list.ts +0 -183
- package/src/cmd/ai/cadence/pause.ts +0 -119
- package/src/cmd/ai/cadence/resume.ts +0 -124
- package/src/cmd/ai/cadence/status.ts +0 -141
- package/src/cmd/ai/cadence/stop.ts +0 -124
- package/src/cmd/ai/cadence/util.ts +0 -86
|
@@ -1,141 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
import { createCommand } from '../../../types';
|
|
3
|
-
import * as tui from '../../../tui';
|
|
4
|
-
import { createCadenceKVAdapter, CADENCE_NAMESPACE, getLoopStateKey, parseLoopState } from './util';
|
|
5
|
-
import { getCommand } from '../../../command-prefix';
|
|
6
|
-
|
|
7
|
-
const CadenceStatusResponseSchema = z.object({
|
|
8
|
-
found: z.boolean(),
|
|
9
|
-
loop: z
|
|
10
|
-
.object({
|
|
11
|
-
loopId: z.string(),
|
|
12
|
-
status: z.string(),
|
|
13
|
-
iteration: z.number(),
|
|
14
|
-
maxIterations: z.number(),
|
|
15
|
-
prompt: z.string(),
|
|
16
|
-
projectLabel: z.string().optional(),
|
|
17
|
-
sessionId: z.string().optional(),
|
|
18
|
-
createdAt: z.string(),
|
|
19
|
-
updatedAt: z.string(),
|
|
20
|
-
lastError: z.string().optional(),
|
|
21
|
-
})
|
|
22
|
-
.optional(),
|
|
23
|
-
});
|
|
24
|
-
|
|
25
|
-
export const statusSubcommand = createCommand({
|
|
26
|
-
name: 'status',
|
|
27
|
-
aliases: ['get', 'show'],
|
|
28
|
-
description: 'Get status of a Cadence loop',
|
|
29
|
-
tags: ['read-only', 'fast', 'requires-auth'],
|
|
30
|
-
requires: { auth: true },
|
|
31
|
-
examples: [
|
|
32
|
-
{ command: getCommand('cadence status lp_auth_impl'), description: 'Get loop status' },
|
|
33
|
-
],
|
|
34
|
-
schema: {
|
|
35
|
-
args: z.object({
|
|
36
|
-
loopId: z.string().min(1).describe('The loop ID (e.g., lp_auth_impl)'),
|
|
37
|
-
}),
|
|
38
|
-
response: CadenceStatusResponseSchema,
|
|
39
|
-
},
|
|
40
|
-
idempotent: true,
|
|
41
|
-
|
|
42
|
-
async handler(ctx) {
|
|
43
|
-
const { args, options } = ctx;
|
|
44
|
-
const kv = await createCadenceKVAdapter(ctx);
|
|
45
|
-
|
|
46
|
-
const key = getLoopStateKey(args.loopId);
|
|
47
|
-
const result = await kv.get(CADENCE_NAMESPACE, key);
|
|
48
|
-
|
|
49
|
-
if (!result.exists || !result.data) {
|
|
50
|
-
if (!options.json) {
|
|
51
|
-
tui.warning(`Loop ${args.loopId} not found.`);
|
|
52
|
-
}
|
|
53
|
-
return { found: false };
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
let data: unknown;
|
|
57
|
-
if (typeof result.data === 'string') {
|
|
58
|
-
try {
|
|
59
|
-
data = JSON.parse(result.data);
|
|
60
|
-
} catch {
|
|
61
|
-
if (!options.json) {
|
|
62
|
-
tui.error(`Failed to parse loop state for ${args.loopId}`);
|
|
63
|
-
}
|
|
64
|
-
return { found: false };
|
|
65
|
-
}
|
|
66
|
-
} else {
|
|
67
|
-
data = result.data;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
const loop = parseLoopState(data);
|
|
71
|
-
if (!loop) {
|
|
72
|
-
if (!options.json) {
|
|
73
|
-
tui.error(`Invalid loop state for ${args.loopId}`);
|
|
74
|
-
}
|
|
75
|
-
return { found: false };
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
if (!options.json) {
|
|
79
|
-
console.log();
|
|
80
|
-
tui.info(`Cadence Loop: ${tui.colorPrimary(loop.loopId)}`);
|
|
81
|
-
console.log();
|
|
82
|
-
|
|
83
|
-
const details = [
|
|
84
|
-
['Status', formatStatus(loop.status)],
|
|
85
|
-
['Iteration', `${loop.iteration} / ${loop.maxIterations}`],
|
|
86
|
-
['Project', loop.projectLabel ?? '-'],
|
|
87
|
-
['Session', loop.sessionId ?? '-'],
|
|
88
|
-
['Created', loop.createdAt],
|
|
89
|
-
['Updated', loop.updatedAt],
|
|
90
|
-
];
|
|
91
|
-
|
|
92
|
-
if (loop.lastError) {
|
|
93
|
-
details.push(['Last Error', tui.colorError(loop.lastError)]);
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
for (const [label, value] of details) {
|
|
97
|
-
console.log(` ${tui.muted(label + ':')} ${value}`);
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
console.log();
|
|
101
|
-
console.log(tui.muted('Task:'));
|
|
102
|
-
console.log(` ${loop.prompt}`);
|
|
103
|
-
console.log();
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
return {
|
|
107
|
-
found: true,
|
|
108
|
-
loop: {
|
|
109
|
-
loopId: loop.loopId,
|
|
110
|
-
status: loop.status,
|
|
111
|
-
iteration: loop.iteration,
|
|
112
|
-
maxIterations: loop.maxIterations,
|
|
113
|
-
prompt: loop.prompt,
|
|
114
|
-
projectLabel: loop.projectLabel,
|
|
115
|
-
sessionId: loop.sessionId,
|
|
116
|
-
createdAt: loop.createdAt,
|
|
117
|
-
updatedAt: loop.updatedAt,
|
|
118
|
-
lastError: loop.lastError,
|
|
119
|
-
},
|
|
120
|
-
};
|
|
121
|
-
},
|
|
122
|
-
});
|
|
123
|
-
|
|
124
|
-
function formatStatus(status: string): string {
|
|
125
|
-
switch (status) {
|
|
126
|
-
case 'running':
|
|
127
|
-
return tui.colorSuccess('● running');
|
|
128
|
-
case 'paused':
|
|
129
|
-
return tui.colorWarning('⏸ paused');
|
|
130
|
-
case 'completed':
|
|
131
|
-
return tui.colorSuccess('✓ completed');
|
|
132
|
-
case 'failed':
|
|
133
|
-
return tui.colorError('✗ failed');
|
|
134
|
-
case 'cancelled':
|
|
135
|
-
return tui.muted('○ cancelled');
|
|
136
|
-
default:
|
|
137
|
-
return status;
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
export default statusSubcommand;
|
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
import { createCommand } from '../../../types';
|
|
3
|
-
import * as tui from '../../../tui';
|
|
4
|
-
import {
|
|
5
|
-
createCadenceKVAdapter,
|
|
6
|
-
CADENCE_NAMESPACE,
|
|
7
|
-
getLoopStateKey,
|
|
8
|
-
parseLoopState,
|
|
9
|
-
type CadenceLoop,
|
|
10
|
-
} from './util';
|
|
11
|
-
import { getCommand } from '../../../command-prefix';
|
|
12
|
-
|
|
13
|
-
const CadenceStopResponseSchema = z.object({
|
|
14
|
-
success: z.boolean(),
|
|
15
|
-
loopId: z.string(),
|
|
16
|
-
previousStatus: z.string().optional(),
|
|
17
|
-
newStatus: z.string().optional(),
|
|
18
|
-
message: z.string(),
|
|
19
|
-
});
|
|
20
|
-
|
|
21
|
-
export const stopSubcommand = createCommand({
|
|
22
|
-
name: 'stop',
|
|
23
|
-
aliases: ['cancel'],
|
|
24
|
-
description: 'Stop and cancel a Cadence loop',
|
|
25
|
-
tags: ['mutating', 'updates-resource', 'fast', 'requires-auth'],
|
|
26
|
-
requires: { auth: true },
|
|
27
|
-
examples: [
|
|
28
|
-
{ command: getCommand('cadence stop lp_auth_impl'), description: 'Stop and cancel a loop' },
|
|
29
|
-
],
|
|
30
|
-
schema: {
|
|
31
|
-
args: z.object({
|
|
32
|
-
loopId: z.string().min(1).describe('The loop ID to stop'),
|
|
33
|
-
}),
|
|
34
|
-
response: CadenceStopResponseSchema,
|
|
35
|
-
},
|
|
36
|
-
|
|
37
|
-
async handler(ctx) {
|
|
38
|
-
const { args, options } = ctx;
|
|
39
|
-
const kv = await createCadenceKVAdapter(ctx);
|
|
40
|
-
|
|
41
|
-
const key = getLoopStateKey(args.loopId);
|
|
42
|
-
const result = await kv.get(CADENCE_NAMESPACE, key);
|
|
43
|
-
|
|
44
|
-
if (!result.exists || !result.data) {
|
|
45
|
-
if (!options.json) {
|
|
46
|
-
tui.error(`Loop ${args.loopId} not found.`);
|
|
47
|
-
}
|
|
48
|
-
return {
|
|
49
|
-
success: false,
|
|
50
|
-
loopId: args.loopId,
|
|
51
|
-
message: 'Loop not found',
|
|
52
|
-
};
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
let data: unknown;
|
|
56
|
-
if (typeof result.data === 'string') {
|
|
57
|
-
try {
|
|
58
|
-
data = JSON.parse(result.data);
|
|
59
|
-
} catch {
|
|
60
|
-
if (!options.json) {
|
|
61
|
-
tui.error(`Failed to parse loop state for ${args.loopId}`);
|
|
62
|
-
}
|
|
63
|
-
return {
|
|
64
|
-
success: false,
|
|
65
|
-
loopId: args.loopId,
|
|
66
|
-
message: 'Failed to parse loop state',
|
|
67
|
-
};
|
|
68
|
-
}
|
|
69
|
-
} else {
|
|
70
|
-
data = result.data;
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
const loop = parseLoopState(data);
|
|
74
|
-
if (!loop) {
|
|
75
|
-
if (!options.json) {
|
|
76
|
-
tui.error(`Invalid loop state for ${args.loopId}`);
|
|
77
|
-
}
|
|
78
|
-
return {
|
|
79
|
-
success: false,
|
|
80
|
-
loopId: args.loopId,
|
|
81
|
-
message: 'Invalid loop state',
|
|
82
|
-
};
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
const previousStatus = loop.status;
|
|
86
|
-
|
|
87
|
-
if (loop.status === 'completed' || loop.status === 'cancelled') {
|
|
88
|
-
if (!options.json) {
|
|
89
|
-
tui.warning(`Loop ${args.loopId} is already ${loop.status}`);
|
|
90
|
-
}
|
|
91
|
-
return {
|
|
92
|
-
success: false,
|
|
93
|
-
loopId: args.loopId,
|
|
94
|
-
previousStatus,
|
|
95
|
-
message: `Loop is already ${loop.status}`,
|
|
96
|
-
};
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
// Update status to cancelled
|
|
100
|
-
const updatedLoop: CadenceLoop = {
|
|
101
|
-
...loop,
|
|
102
|
-
status: 'cancelled',
|
|
103
|
-
updatedAt: new Date().toISOString(),
|
|
104
|
-
};
|
|
105
|
-
|
|
106
|
-
await kv.set(CADENCE_NAMESPACE, key, JSON.stringify(updatedLoop), {
|
|
107
|
-
contentType: 'application/json',
|
|
108
|
-
});
|
|
109
|
-
|
|
110
|
-
if (!options.json) {
|
|
111
|
-
tui.success(`Stopped loop ${args.loopId}`);
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
return {
|
|
115
|
-
success: true,
|
|
116
|
-
loopId: args.loopId,
|
|
117
|
-
previousStatus,
|
|
118
|
-
newStatus: 'cancelled',
|
|
119
|
-
message: 'Loop cancelled successfully',
|
|
120
|
-
};
|
|
121
|
-
},
|
|
122
|
-
});
|
|
123
|
-
|
|
124
|
-
export default stopSubcommand;
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
import { KeyValueStorageService, type Logger } from '@agentuity/core';
|
|
2
|
-
import { createServerFetchAdapter, getServiceUrls } from '@agentuity/server';
|
|
3
|
-
import { getDefaultRegion } from '../../../config';
|
|
4
|
-
import type { AuthData, Config } from '../../../types';
|
|
5
|
-
|
|
6
|
-
/** KV namespace for Cadence loop state */
|
|
7
|
-
export const CADENCE_NAMESPACE = 'agentuity-opencode-tasks';
|
|
8
|
-
|
|
9
|
-
/** Prefix for loop state keys */
|
|
10
|
-
export const LOOP_KEY_PREFIX = 'loop:';
|
|
11
|
-
|
|
12
|
-
export interface CadenceLoop {
|
|
13
|
-
loopId: string;
|
|
14
|
-
parentId?: string;
|
|
15
|
-
projectLabel?: string;
|
|
16
|
-
sessionId?: string;
|
|
17
|
-
status: 'running' | 'paused' | 'completed' | 'failed' | 'cancelled';
|
|
18
|
-
iteration: number;
|
|
19
|
-
maxIterations: number;
|
|
20
|
-
prompt: string;
|
|
21
|
-
createdAt: string;
|
|
22
|
-
updatedAt: string;
|
|
23
|
-
lastError?: string;
|
|
24
|
-
sandbox?: {
|
|
25
|
-
mode: 'off' | 'per_iteration' | 'persistent';
|
|
26
|
-
sandboxId?: string;
|
|
27
|
-
};
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
export interface CadenceContext {
|
|
31
|
-
logger: Logger;
|
|
32
|
-
config: Config | null;
|
|
33
|
-
auth: AuthData;
|
|
34
|
-
project?: { region: string };
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
/**
|
|
38
|
-
* Creates a KV storage service for Cadence operations.
|
|
39
|
-
*/
|
|
40
|
-
export async function createCadenceKVAdapter(ctx: CadenceContext): Promise<KeyValueStorageService> {
|
|
41
|
-
const adapter = createServerFetchAdapter(
|
|
42
|
-
{
|
|
43
|
-
headers: {
|
|
44
|
-
Authorization: `Bearer ${ctx.auth.apiKey}`,
|
|
45
|
-
},
|
|
46
|
-
},
|
|
47
|
-
ctx.logger
|
|
48
|
-
);
|
|
49
|
-
|
|
50
|
-
const region = ctx.project?.region || (await getDefaultRegion(ctx.config?.name, ctx.config));
|
|
51
|
-
const urls = getServiceUrls(region);
|
|
52
|
-
const baseUrl = urls.catalyst;
|
|
53
|
-
return new KeyValueStorageService(baseUrl, adapter);
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
/**
|
|
57
|
-
* Gets the state key for a loop.
|
|
58
|
-
*/
|
|
59
|
-
export function getLoopStateKey(loopId: string): string {
|
|
60
|
-
return `${LOOP_KEY_PREFIX}${loopId}:state`;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
/**
|
|
64
|
-
* Parses a loop state from KV storage.
|
|
65
|
-
*/
|
|
66
|
-
export function parseLoopState(data: unknown): CadenceLoop | null {
|
|
67
|
-
if (!data || typeof data !== 'object') return null;
|
|
68
|
-
|
|
69
|
-
const loop = data as Record<string, unknown>;
|
|
70
|
-
if (!loop.loopId || !loop.status || !loop.prompt) return null;
|
|
71
|
-
|
|
72
|
-
return {
|
|
73
|
-
loopId: String(loop.loopId),
|
|
74
|
-
parentId: loop.parentId ? String(loop.parentId) : undefined,
|
|
75
|
-
projectLabel: loop.projectLabel ? String(loop.projectLabel) : undefined,
|
|
76
|
-
sessionId: loop.sessionId ? String(loop.sessionId) : undefined,
|
|
77
|
-
status: loop.status as CadenceLoop['status'],
|
|
78
|
-
iteration: Number(loop.iteration) || 1,
|
|
79
|
-
maxIterations: Number(loop.maxIterations) || 50,
|
|
80
|
-
prompt: String(loop.prompt),
|
|
81
|
-
createdAt: String(loop.createdAt),
|
|
82
|
-
updatedAt: String(loop.updatedAt),
|
|
83
|
-
lastError: loop.lastError ? String(loop.lastError) : undefined,
|
|
84
|
-
sandbox: loop.sandbox as CadenceLoop['sandbox'],
|
|
85
|
-
};
|
|
86
|
-
}
|