@agentuity/cli 0.1.23 → 0.1.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +36 -5
- package/dist/cli.js.map +1 -1
- package/dist/cmd/ai/cadence/index.d.ts +3 -0
- package/dist/cmd/ai/cadence/index.d.ts.map +1 -0
- package/dist/cmd/ai/cadence/index.js +35 -0
- package/dist/cmd/ai/cadence/index.js.map +1 -0
- package/dist/cmd/ai/cadence/list.d.ts +3 -0
- package/dist/cmd/ai/cadence/list.d.ts.map +1 -0
- package/dist/cmd/ai/cadence/list.js +167 -0
- package/dist/cmd/ai/cadence/list.js.map +1 -0
- package/dist/cmd/ai/cadence/pause.d.ts +3 -0
- package/dist/cmd/ai/cadence/pause.d.ts.map +1 -0
- package/dist/cmd/ai/cadence/pause.js +103 -0
- package/dist/cmd/ai/cadence/pause.js.map +1 -0
- package/dist/cmd/ai/cadence/resume.d.ts +3 -0
- package/dist/cmd/ai/cadence/resume.d.ts.map +1 -0
- package/dist/cmd/ai/cadence/resume.js +106 -0
- package/dist/cmd/ai/cadence/resume.js.map +1 -0
- package/dist/cmd/ai/cadence/status.d.ts +3 -0
- package/dist/cmd/ai/cadence/status.d.ts.map +1 -0
- package/dist/cmd/ai/cadence/status.js +129 -0
- package/dist/cmd/ai/cadence/status.js.map +1 -0
- package/dist/cmd/ai/cadence/stop.d.ts +3 -0
- package/dist/cmd/ai/cadence/stop.d.ts.map +1 -0
- package/dist/cmd/ai/cadence/stop.js +107 -0
- package/dist/cmd/ai/cadence/stop.js.map +1 -0
- package/dist/cmd/ai/cadence/util.d.ts +44 -0
- package/dist/cmd/ai/cadence/util.d.ts.map +1 -0
- package/dist/cmd/ai/cadence/util.js +52 -0
- package/dist/cmd/ai/cadence/util.js.map +1 -0
- package/dist/cmd/ai/index.d.ts.map +1 -1
- package/dist/cmd/ai/index.js +9 -1
- package/dist/cmd/ai/index.js.map +1 -1
- package/dist/cmd/auth/machine/setup.js +1 -1
- package/dist/cmd/auth/machine/setup.js.map +1 -1
- package/dist/cmd/auth/ssh/add.js +1 -1
- package/dist/cmd/auth/ssh/add.js.map +1 -1
- package/dist/cmd/build/patch/index.d.ts.map +1 -1
- package/dist/cmd/build/patch/index.js +4 -0
- package/dist/cmd/build/patch/index.js.map +1 -1
- package/dist/cmd/build/patch/otel-llm.d.ts +10 -0
- package/dist/cmd/build/patch/otel-llm.d.ts.map +1 -0
- package/dist/cmd/build/patch/otel-llm.js +374 -0
- package/dist/cmd/build/patch/otel-llm.js.map +1 -0
- package/dist/cmd/cloud/db/create.js +3 -3
- package/dist/cmd/cloud/db/create.js.map +1 -1
- package/dist/cmd/cloud/deploy.d.ts.map +1 -1
- package/dist/cmd/cloud/deploy.js +55 -2
- package/dist/cmd/cloud/deploy.js.map +1 -1
- package/dist/cmd/cloud/env/pull.d.ts.map +1 -1
- package/dist/cmd/cloud/env/pull.js +26 -17
- package/dist/cmd/cloud/env/pull.js.map +1 -1
- package/dist/cmd/cloud/eval/get.d.ts +2 -0
- package/dist/cmd/cloud/eval/get.d.ts.map +1 -0
- package/dist/cmd/cloud/eval/get.js +79 -0
- package/dist/cmd/cloud/eval/get.js.map +1 -0
- package/dist/cmd/cloud/eval/index.d.ts +2 -0
- package/dist/cmd/cloud/eval/index.d.ts.map +1 -0
- package/dist/cmd/cloud/eval/index.js +15 -0
- package/dist/cmd/cloud/eval/index.js.map +1 -0
- package/dist/cmd/cloud/eval/list.d.ts +2 -0
- package/dist/cmd/cloud/eval/list.d.ts.map +1 -0
- package/dist/cmd/cloud/eval/list.js +119 -0
- package/dist/cmd/cloud/eval/list.js.map +1 -0
- package/dist/cmd/cloud/eval-run/get.d.ts +2 -0
- package/dist/cmd/cloud/eval-run/get.d.ts.map +1 -0
- package/dist/cmd/cloud/eval-run/get.js +106 -0
- package/dist/cmd/cloud/eval-run/get.js.map +1 -0
- package/dist/cmd/cloud/eval-run/index.d.ts +2 -0
- package/dist/cmd/cloud/eval-run/index.d.ts.map +1 -0
- package/dist/cmd/cloud/eval-run/index.js +15 -0
- package/dist/cmd/cloud/eval-run/index.js.map +1 -0
- package/dist/cmd/cloud/eval-run/list.d.ts +2 -0
- package/dist/cmd/cloud/eval-run/list.d.ts.map +1 -0
- package/dist/cmd/cloud/eval-run/list.js +144 -0
- package/dist/cmd/cloud/eval-run/list.js.map +1 -0
- package/dist/cmd/cloud/index.d.ts.map +1 -1
- package/dist/cmd/cloud/index.js +4 -0
- package/dist/cmd/cloud/index.js.map +1 -1
- package/dist/cmd/cloud/machine/list.d.ts.map +1 -1
- package/dist/cmd/cloud/machine/list.js +16 -0
- package/dist/cmd/cloud/machine/list.js.map +1 -1
- package/dist/cmd/cloud/queue/dlq.d.ts.map +1 -1
- package/dist/cmd/cloud/queue/dlq.js +15 -10
- package/dist/cmd/cloud/queue/dlq.js.map +1 -1
- package/dist/cmd/cloud/sandbox/download.d.ts.map +1 -1
- package/dist/cmd/cloud/sandbox/download.js +8 -3
- package/dist/cmd/cloud/sandbox/download.js.map +1 -1
- package/dist/cmd/cloud/sandbox/snapshot/build.d.ts.map +1 -1
- package/dist/cmd/cloud/sandbox/snapshot/build.js +43 -36
- package/dist/cmd/cloud/sandbox/snapshot/build.js.map +1 -1
- package/dist/cmd/cloud/sandbox/snapshot/create.d.ts.map +1 -1
- package/dist/cmd/cloud/sandbox/snapshot/create.js +5 -1
- package/dist/cmd/cloud/sandbox/snapshot/create.js.map +1 -1
- package/dist/cmd/cloud/sandbox/upload.d.ts.map +1 -1
- package/dist/cmd/cloud/sandbox/upload.js +8 -1
- package/dist/cmd/cloud/sandbox/upload.js.map +1 -1
- package/dist/cmd/cloud/storage/upload.js +1 -1
- package/dist/cmd/cloud/storage/upload.js.map +1 -1
- package/dist/cmd/cloud/vector/stats.d.ts.map +1 -1
- package/dist/cmd/cloud/vector/stats.js +3 -1
- package/dist/cmd/cloud/vector/stats.js.map +1 -1
- package/dist/cmd/cloud/vector/upsert.js +1 -1
- package/dist/cmd/cloud/vector/upsert.js.map +1 -1
- package/dist/cmd/profile/create.js +2 -2
- package/dist/cmd/profile/create.js.map +1 -1
- package/dist/cmd/project/create.d.ts.map +1 -1
- package/dist/cmd/project/create.js +6 -3
- package/dist/cmd/project/create.js.map +1 -1
- package/dist/cmd/project/delete.d.ts.map +1 -1
- package/dist/cmd/project/delete.js +46 -10
- package/dist/cmd/project/delete.js.map +1 -1
- package/dist/cmd/setup/index.d.ts.map +1 -1
- package/dist/cmd/setup/index.js +4 -1
- package/dist/cmd/setup/index.js.map +1 -1
- package/dist/env-util.d.ts.map +1 -1
- package/dist/env-util.js +4 -1
- package/dist/env-util.js.map +1 -1
- package/dist/schema-parser.d.ts +17 -1
- package/dist/schema-parser.d.ts.map +1 -1
- package/dist/schema-parser.js +131 -2
- package/dist/schema-parser.js.map +1 -1
- package/dist/tui.d.ts.map +1 -1
- package/dist/tui.js +4 -0
- package/dist/tui.js.map +1 -1
- package/dist/utils/deps.d.ts +8 -0
- package/dist/utils/deps.d.ts.map +1 -0
- package/dist/utils/deps.js +36 -0
- package/dist/utils/deps.js.map +1 -0
- package/package.json +6 -6
- package/src/cli.ts +36 -5
- package/src/cmd/ai/cadence/index.ts +36 -0
- package/src/cmd/ai/cadence/list.ts +183 -0
- package/src/cmd/ai/cadence/pause.ts +119 -0
- package/src/cmd/ai/cadence/resume.ts +124 -0
- package/src/cmd/ai/cadence/status.ts +141 -0
- package/src/cmd/ai/cadence/stop.ts +124 -0
- package/src/cmd/ai/cadence/util.ts +86 -0
- package/src/cmd/ai/index.ts +9 -1
- package/src/cmd/auth/machine/setup.ts +1 -1
- package/src/cmd/auth/ssh/add.ts +1 -1
- package/src/cmd/build/patch/index.ts +4 -0
- package/src/cmd/build/patch/otel-llm.ts +421 -0
- package/src/cmd/cloud/db/create.ts +3 -3
- package/src/cmd/cloud/deploy.ts +77 -1
- package/src/cmd/cloud/env/pull.ts +29 -19
- package/src/cmd/cloud/eval/get.ts +85 -0
- package/src/cmd/cloud/eval/index.ts +15 -0
- package/src/cmd/cloud/eval/list.ts +129 -0
- package/src/cmd/cloud/eval-run/get.ts +113 -0
- package/src/cmd/cloud/eval-run/index.ts +15 -0
- package/src/cmd/cloud/eval-run/list.ts +154 -0
- package/src/cmd/cloud/index.ts +4 -0
- package/src/cmd/cloud/machine/list.ts +16 -0
- package/src/cmd/cloud/queue/dlq.ts +16 -10
- package/src/cmd/cloud/sandbox/download.ts +9 -3
- package/src/cmd/cloud/sandbox/snapshot/build.ts +64 -45
- package/src/cmd/cloud/sandbox/snapshot/create.ts +5 -1
- package/src/cmd/cloud/sandbox/upload.ts +9 -1
- package/src/cmd/cloud/storage/upload.ts +1 -1
- package/src/cmd/cloud/vector/stats.ts +3 -1
- package/src/cmd/cloud/vector/upsert.ts +1 -1
- package/src/cmd/profile/create.ts +2 -2
- package/src/cmd/project/create.ts +6 -3
- package/src/cmd/project/delete.ts +55 -10
- package/src/cmd/setup/index.ts +4 -1
- package/src/env-util.ts +4 -1
- package/src/schema-parser.ts +150 -2
- package/src/tui.ts +5 -0
- package/src/utils/deps.ts +54 -0
|
@@ -0,0 +1,103 @@
|
|
|
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
|
+
const CadencePauseResponseSchema = z.object({
|
|
7
|
+
success: z.boolean(),
|
|
8
|
+
loopId: z.string(),
|
|
9
|
+
previousStatus: z.string().optional(),
|
|
10
|
+
newStatus: z.string().optional(),
|
|
11
|
+
message: z.string(),
|
|
12
|
+
});
|
|
13
|
+
export const pauseSubcommand = createCommand({
|
|
14
|
+
name: 'pause',
|
|
15
|
+
description: 'Pause a running Cadence loop',
|
|
16
|
+
tags: ['mutating', 'updates-resource', 'fast', 'requires-auth'],
|
|
17
|
+
requires: { auth: true },
|
|
18
|
+
examples: [{ command: getCommand('cadence pause lp_auth_impl'), description: 'Pause a loop' }],
|
|
19
|
+
schema: {
|
|
20
|
+
args: z.object({
|
|
21
|
+
loopId: z.string().min(1).describe('The loop ID to pause'),
|
|
22
|
+
}),
|
|
23
|
+
response: CadencePauseResponseSchema,
|
|
24
|
+
},
|
|
25
|
+
async handler(ctx) {
|
|
26
|
+
const { args, options } = ctx;
|
|
27
|
+
const kv = await createCadenceKVAdapter(ctx);
|
|
28
|
+
const key = getLoopStateKey(args.loopId);
|
|
29
|
+
const result = await kv.get(CADENCE_NAMESPACE, key);
|
|
30
|
+
if (!result.exists || !result.data) {
|
|
31
|
+
if (!options.json) {
|
|
32
|
+
tui.error(`Loop ${args.loopId} not found.`);
|
|
33
|
+
}
|
|
34
|
+
return {
|
|
35
|
+
success: false,
|
|
36
|
+
loopId: args.loopId,
|
|
37
|
+
message: 'Loop not found',
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
let data;
|
|
41
|
+
if (typeof result.data === 'string') {
|
|
42
|
+
try {
|
|
43
|
+
data = JSON.parse(result.data);
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
if (!options.json) {
|
|
47
|
+
tui.error(`Failed to parse loop state for ${args.loopId}`);
|
|
48
|
+
}
|
|
49
|
+
return {
|
|
50
|
+
success: false,
|
|
51
|
+
loopId: args.loopId,
|
|
52
|
+
message: 'Failed to parse loop state',
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
data = result.data;
|
|
58
|
+
}
|
|
59
|
+
const loop = parseLoopState(data);
|
|
60
|
+
if (!loop) {
|
|
61
|
+
if (!options.json) {
|
|
62
|
+
tui.error(`Invalid loop state for ${args.loopId}`);
|
|
63
|
+
}
|
|
64
|
+
return {
|
|
65
|
+
success: false,
|
|
66
|
+
loopId: args.loopId,
|
|
67
|
+
message: 'Invalid loop state',
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
if (loop.status !== 'running') {
|
|
71
|
+
if (!options.json) {
|
|
72
|
+
tui.warning(`Loop ${args.loopId} is not running (status: ${loop.status})`);
|
|
73
|
+
}
|
|
74
|
+
return {
|
|
75
|
+
success: false,
|
|
76
|
+
loopId: args.loopId,
|
|
77
|
+
previousStatus: loop.status,
|
|
78
|
+
message: `Cannot pause loop with status: ${loop.status}`,
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
// Update status to paused
|
|
82
|
+
const updatedLoop = {
|
|
83
|
+
...loop,
|
|
84
|
+
status: 'paused',
|
|
85
|
+
updatedAt: new Date().toISOString(),
|
|
86
|
+
};
|
|
87
|
+
await kv.set(CADENCE_NAMESPACE, key, JSON.stringify(updatedLoop), {
|
|
88
|
+
contentType: 'application/json',
|
|
89
|
+
});
|
|
90
|
+
if (!options.json) {
|
|
91
|
+
tui.success(`Paused loop ${args.loopId}`);
|
|
92
|
+
}
|
|
93
|
+
return {
|
|
94
|
+
success: true,
|
|
95
|
+
loopId: args.loopId,
|
|
96
|
+
previousStatus: 'running',
|
|
97
|
+
newStatus: 'paused',
|
|
98
|
+
message: 'Loop paused successfully',
|
|
99
|
+
};
|
|
100
|
+
},
|
|
101
|
+
});
|
|
102
|
+
export default pauseSubcommand;
|
|
103
|
+
//# sourceMappingURL=pause.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pause.js","sourceRoot":"","sources":["../../../../src/cmd/ai/cadence/pause.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resume.d.ts","sourceRoot":"","sources":["../../../../src/cmd/ai/cadence/resume.ts"],"names":[],"mappings":"AAoBA,eAAO,MAAM,gBAAgB,sCAqG3B,CAAC;AAEH,eAAe,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,106 @@
|
|
|
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
|
+
const CadenceResumeResponseSchema = z.object({
|
|
7
|
+
success: z.boolean(),
|
|
8
|
+
loopId: z.string(),
|
|
9
|
+
previousStatus: z.string().optional(),
|
|
10
|
+
newStatus: z.string().optional(),
|
|
11
|
+
message: z.string(),
|
|
12
|
+
});
|
|
13
|
+
export const resumeSubcommand = createCommand({
|
|
14
|
+
name: 'resume',
|
|
15
|
+
description: 'Resume a paused Cadence loop',
|
|
16
|
+
tags: ['mutating', 'updates-resource', 'fast', 'requires-auth'],
|
|
17
|
+
requires: { auth: true },
|
|
18
|
+
examples: [
|
|
19
|
+
{ command: getCommand('cadence resume lp_auth_impl'), description: 'Resume a paused loop' },
|
|
20
|
+
],
|
|
21
|
+
schema: {
|
|
22
|
+
args: z.object({
|
|
23
|
+
loopId: z.string().min(1).describe('The loop ID to resume'),
|
|
24
|
+
}),
|
|
25
|
+
response: CadenceResumeResponseSchema,
|
|
26
|
+
},
|
|
27
|
+
async handler(ctx) {
|
|
28
|
+
const { args, options } = ctx;
|
|
29
|
+
const kv = await createCadenceKVAdapter(ctx);
|
|
30
|
+
const key = getLoopStateKey(args.loopId);
|
|
31
|
+
const result = await kv.get(CADENCE_NAMESPACE, key);
|
|
32
|
+
if (!result.exists || !result.data) {
|
|
33
|
+
if (!options.json) {
|
|
34
|
+
tui.error(`Loop ${args.loopId} not found.`);
|
|
35
|
+
}
|
|
36
|
+
return {
|
|
37
|
+
success: false,
|
|
38
|
+
loopId: args.loopId,
|
|
39
|
+
message: 'Loop not found',
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
let data;
|
|
43
|
+
if (typeof result.data === 'string') {
|
|
44
|
+
try {
|
|
45
|
+
data = JSON.parse(result.data);
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
if (!options.json) {
|
|
49
|
+
tui.error(`Failed to parse loop state for ${args.loopId}`);
|
|
50
|
+
}
|
|
51
|
+
return {
|
|
52
|
+
success: false,
|
|
53
|
+
loopId: args.loopId,
|
|
54
|
+
message: 'Failed to parse loop state',
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
data = result.data;
|
|
60
|
+
}
|
|
61
|
+
const loop = parseLoopState(data);
|
|
62
|
+
if (!loop) {
|
|
63
|
+
if (!options.json) {
|
|
64
|
+
tui.error(`Invalid loop state for ${args.loopId}`);
|
|
65
|
+
}
|
|
66
|
+
return {
|
|
67
|
+
success: false,
|
|
68
|
+
loopId: args.loopId,
|
|
69
|
+
message: 'Invalid loop state',
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
if (loop.status !== 'paused') {
|
|
73
|
+
if (!options.json) {
|
|
74
|
+
tui.warning(`Loop ${args.loopId} is not paused (status: ${loop.status})`);
|
|
75
|
+
}
|
|
76
|
+
return {
|
|
77
|
+
success: false,
|
|
78
|
+
loopId: args.loopId,
|
|
79
|
+
previousStatus: loop.status,
|
|
80
|
+
message: `Cannot resume loop with status: ${loop.status}`,
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
// Update status to running
|
|
84
|
+
const updatedLoop = {
|
|
85
|
+
...loop,
|
|
86
|
+
status: 'running',
|
|
87
|
+
updatedAt: new Date().toISOString(),
|
|
88
|
+
};
|
|
89
|
+
await kv.set(CADENCE_NAMESPACE, key, JSON.stringify(updatedLoop), {
|
|
90
|
+
contentType: 'application/json',
|
|
91
|
+
});
|
|
92
|
+
if (!options.json) {
|
|
93
|
+
tui.success(`Resumed loop ${args.loopId}`);
|
|
94
|
+
tui.info('Note: The loop will continue when the Open Code session checks for status updates.');
|
|
95
|
+
}
|
|
96
|
+
return {
|
|
97
|
+
success: true,
|
|
98
|
+
loopId: args.loopId,
|
|
99
|
+
previousStatus: 'paused',
|
|
100
|
+
newStatus: 'running',
|
|
101
|
+
message: 'Loop resumed successfully',
|
|
102
|
+
};
|
|
103
|
+
},
|
|
104
|
+
});
|
|
105
|
+
export default resumeSubcommand;
|
|
106
|
+
//# sourceMappingURL=resume.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resume.js","sourceRoot":"","sources":["../../../../src/cmd/ai/cadence/resume.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../../src/cmd/ai/cadence/status.ts"],"names":[],"mappings":"AAwBA,eAAO,MAAM,gBAAgB,sCAiG3B,CAAC;AAmBH,eAAe,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,129 @@
|
|
|
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
|
+
const CadenceStatusResponseSchema = z.object({
|
|
7
|
+
found: z.boolean(),
|
|
8
|
+
loop: z
|
|
9
|
+
.object({
|
|
10
|
+
loopId: z.string(),
|
|
11
|
+
status: z.string(),
|
|
12
|
+
iteration: z.number(),
|
|
13
|
+
maxIterations: z.number(),
|
|
14
|
+
prompt: z.string(),
|
|
15
|
+
projectLabel: z.string().optional(),
|
|
16
|
+
sessionId: z.string().optional(),
|
|
17
|
+
createdAt: z.string(),
|
|
18
|
+
updatedAt: z.string(),
|
|
19
|
+
lastError: z.string().optional(),
|
|
20
|
+
})
|
|
21
|
+
.optional(),
|
|
22
|
+
});
|
|
23
|
+
export const statusSubcommand = createCommand({
|
|
24
|
+
name: 'status',
|
|
25
|
+
aliases: ['get', 'show'],
|
|
26
|
+
description: 'Get status of a Cadence loop',
|
|
27
|
+
tags: ['read-only', 'fast', 'requires-auth'],
|
|
28
|
+
requires: { auth: true },
|
|
29
|
+
examples: [
|
|
30
|
+
{ command: getCommand('cadence status lp_auth_impl'), description: 'Get loop status' },
|
|
31
|
+
],
|
|
32
|
+
schema: {
|
|
33
|
+
args: z.object({
|
|
34
|
+
loopId: z.string().min(1).describe('The loop ID (e.g., lp_auth_impl)'),
|
|
35
|
+
}),
|
|
36
|
+
response: CadenceStatusResponseSchema,
|
|
37
|
+
},
|
|
38
|
+
idempotent: true,
|
|
39
|
+
async handler(ctx) {
|
|
40
|
+
const { args, options } = ctx;
|
|
41
|
+
const kv = await createCadenceKVAdapter(ctx);
|
|
42
|
+
const key = getLoopStateKey(args.loopId);
|
|
43
|
+
const result = await kv.get(CADENCE_NAMESPACE, key);
|
|
44
|
+
if (!result.exists || !result.data) {
|
|
45
|
+
if (!options.json) {
|
|
46
|
+
tui.warning(`Loop ${args.loopId} not found.`);
|
|
47
|
+
}
|
|
48
|
+
return { found: false };
|
|
49
|
+
}
|
|
50
|
+
let data;
|
|
51
|
+
if (typeof result.data === 'string') {
|
|
52
|
+
try {
|
|
53
|
+
data = JSON.parse(result.data);
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
if (!options.json) {
|
|
57
|
+
tui.error(`Failed to parse loop state for ${args.loopId}`);
|
|
58
|
+
}
|
|
59
|
+
return { found: false };
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
data = result.data;
|
|
64
|
+
}
|
|
65
|
+
const loop = parseLoopState(data);
|
|
66
|
+
if (!loop) {
|
|
67
|
+
if (!options.json) {
|
|
68
|
+
tui.error(`Invalid loop state for ${args.loopId}`);
|
|
69
|
+
}
|
|
70
|
+
return { found: false };
|
|
71
|
+
}
|
|
72
|
+
if (!options.json) {
|
|
73
|
+
console.log();
|
|
74
|
+
tui.info(`Cadence Loop: ${tui.colorPrimary(loop.loopId)}`);
|
|
75
|
+
console.log();
|
|
76
|
+
const details = [
|
|
77
|
+
['Status', formatStatus(loop.status)],
|
|
78
|
+
['Iteration', `${loop.iteration} / ${loop.maxIterations}`],
|
|
79
|
+
['Project', loop.projectLabel ?? '-'],
|
|
80
|
+
['Session', loop.sessionId ?? '-'],
|
|
81
|
+
['Created', loop.createdAt],
|
|
82
|
+
['Updated', loop.updatedAt],
|
|
83
|
+
];
|
|
84
|
+
if (loop.lastError) {
|
|
85
|
+
details.push(['Last Error', tui.colorError(loop.lastError)]);
|
|
86
|
+
}
|
|
87
|
+
for (const [label, value] of details) {
|
|
88
|
+
console.log(` ${tui.muted(label + ':')} ${value}`);
|
|
89
|
+
}
|
|
90
|
+
console.log();
|
|
91
|
+
console.log(tui.muted('Task:'));
|
|
92
|
+
console.log(` ${loop.prompt}`);
|
|
93
|
+
console.log();
|
|
94
|
+
}
|
|
95
|
+
return {
|
|
96
|
+
found: true,
|
|
97
|
+
loop: {
|
|
98
|
+
loopId: loop.loopId,
|
|
99
|
+
status: loop.status,
|
|
100
|
+
iteration: loop.iteration,
|
|
101
|
+
maxIterations: loop.maxIterations,
|
|
102
|
+
prompt: loop.prompt,
|
|
103
|
+
projectLabel: loop.projectLabel,
|
|
104
|
+
sessionId: loop.sessionId,
|
|
105
|
+
createdAt: loop.createdAt,
|
|
106
|
+
updatedAt: loop.updatedAt,
|
|
107
|
+
lastError: loop.lastError,
|
|
108
|
+
},
|
|
109
|
+
};
|
|
110
|
+
},
|
|
111
|
+
});
|
|
112
|
+
function formatStatus(status) {
|
|
113
|
+
switch (status) {
|
|
114
|
+
case 'running':
|
|
115
|
+
return tui.colorSuccess('● running');
|
|
116
|
+
case 'paused':
|
|
117
|
+
return tui.colorWarning('⏸ paused');
|
|
118
|
+
case 'completed':
|
|
119
|
+
return tui.colorSuccess('✓ completed');
|
|
120
|
+
case 'failed':
|
|
121
|
+
return tui.colorError('✗ failed');
|
|
122
|
+
case 'cancelled':
|
|
123
|
+
return tui.muted('○ cancelled');
|
|
124
|
+
default:
|
|
125
|
+
return status;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
export default statusSubcommand;
|
|
129
|
+
//# sourceMappingURL=status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../../src/cmd/ai/cadence/status.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stop.d.ts","sourceRoot":"","sources":["../../../../src/cmd/ai/cadence/stop.ts"],"names":[],"mappings":"AAoBA,eAAO,MAAM,cAAc,sCAqGzB,CAAC;AAEH,eAAe,cAAc,CAAC"}
|
|
@@ -0,0 +1,107 @@
|
|
|
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
|
+
const CadenceStopResponseSchema = z.object({
|
|
7
|
+
success: z.boolean(),
|
|
8
|
+
loopId: z.string(),
|
|
9
|
+
previousStatus: z.string().optional(),
|
|
10
|
+
newStatus: z.string().optional(),
|
|
11
|
+
message: z.string(),
|
|
12
|
+
});
|
|
13
|
+
export const stopSubcommand = createCommand({
|
|
14
|
+
name: 'stop',
|
|
15
|
+
aliases: ['cancel'],
|
|
16
|
+
description: 'Stop and cancel a Cadence loop',
|
|
17
|
+
tags: ['mutating', 'updates-resource', 'fast', 'requires-auth'],
|
|
18
|
+
requires: { auth: true },
|
|
19
|
+
examples: [
|
|
20
|
+
{ command: getCommand('cadence stop lp_auth_impl'), description: 'Stop and cancel a loop' },
|
|
21
|
+
],
|
|
22
|
+
schema: {
|
|
23
|
+
args: z.object({
|
|
24
|
+
loopId: z.string().min(1).describe('The loop ID to stop'),
|
|
25
|
+
}),
|
|
26
|
+
response: CadenceStopResponseSchema,
|
|
27
|
+
},
|
|
28
|
+
async handler(ctx) {
|
|
29
|
+
const { args, options } = ctx;
|
|
30
|
+
const kv = await createCadenceKVAdapter(ctx);
|
|
31
|
+
const key = getLoopStateKey(args.loopId);
|
|
32
|
+
const result = await kv.get(CADENCE_NAMESPACE, key);
|
|
33
|
+
if (!result.exists || !result.data) {
|
|
34
|
+
if (!options.json) {
|
|
35
|
+
tui.error(`Loop ${args.loopId} not found.`);
|
|
36
|
+
}
|
|
37
|
+
return {
|
|
38
|
+
success: false,
|
|
39
|
+
loopId: args.loopId,
|
|
40
|
+
message: 'Loop not found',
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
let data;
|
|
44
|
+
if (typeof result.data === 'string') {
|
|
45
|
+
try {
|
|
46
|
+
data = JSON.parse(result.data);
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
if (!options.json) {
|
|
50
|
+
tui.error(`Failed to parse loop state for ${args.loopId}`);
|
|
51
|
+
}
|
|
52
|
+
return {
|
|
53
|
+
success: false,
|
|
54
|
+
loopId: args.loopId,
|
|
55
|
+
message: 'Failed to parse loop state',
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
data = result.data;
|
|
61
|
+
}
|
|
62
|
+
const loop = parseLoopState(data);
|
|
63
|
+
if (!loop) {
|
|
64
|
+
if (!options.json) {
|
|
65
|
+
tui.error(`Invalid loop state for ${args.loopId}`);
|
|
66
|
+
}
|
|
67
|
+
return {
|
|
68
|
+
success: false,
|
|
69
|
+
loopId: args.loopId,
|
|
70
|
+
message: 'Invalid loop state',
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
const previousStatus = loop.status;
|
|
74
|
+
if (loop.status === 'completed' || loop.status === 'cancelled') {
|
|
75
|
+
if (!options.json) {
|
|
76
|
+
tui.warning(`Loop ${args.loopId} is already ${loop.status}`);
|
|
77
|
+
}
|
|
78
|
+
return {
|
|
79
|
+
success: false,
|
|
80
|
+
loopId: args.loopId,
|
|
81
|
+
previousStatus,
|
|
82
|
+
message: `Loop is already ${loop.status}`,
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
// Update status to cancelled
|
|
86
|
+
const updatedLoop = {
|
|
87
|
+
...loop,
|
|
88
|
+
status: 'cancelled',
|
|
89
|
+
updatedAt: new Date().toISOString(),
|
|
90
|
+
};
|
|
91
|
+
await kv.set(CADENCE_NAMESPACE, key, JSON.stringify(updatedLoop), {
|
|
92
|
+
contentType: 'application/json',
|
|
93
|
+
});
|
|
94
|
+
if (!options.json) {
|
|
95
|
+
tui.success(`Stopped loop ${args.loopId}`);
|
|
96
|
+
}
|
|
97
|
+
return {
|
|
98
|
+
success: true,
|
|
99
|
+
loopId: args.loopId,
|
|
100
|
+
previousStatus,
|
|
101
|
+
newStatus: 'cancelled',
|
|
102
|
+
message: 'Loop cancelled successfully',
|
|
103
|
+
};
|
|
104
|
+
},
|
|
105
|
+
});
|
|
106
|
+
export default stopSubcommand;
|
|
107
|
+
//# sourceMappingURL=stop.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stop.js","sourceRoot":"","sources":["../../../../src/cmd/ai/cadence/stop.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,GAAG,MAAM,cAAc,CAAC;AACpC,OAAO,EACN,sBAAsB,EACtB,iBAAiB,EACjB,eAAe,EACf,cAAc,GAEd,MAAM,QAAQ,CAAC;AAChB,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAErD,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;IACpB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACrC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;CACnB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG,aAAa,CAAC;IAC3C,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,CAAC,QAAQ,CAAC;IACnB,WAAW,EAAE,gCAAgC;IAC7C,IAAI,EAAE,CAAC,UAAU,EAAE,kBAAkB,EAAE,MAAM,EAAE,eAAe,CAAC;IAC/D,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;IACxB,QAAQ,EAAE;QACT,EAAE,OAAO,EAAE,UAAU,CAAC,2BAA2B,CAAC,EAAE,WAAW,EAAE,wBAAwB,EAAE;KAC3F;IACD,MAAM,EAAE;QACP,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;YACd,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,qBAAqB,CAAC;SACzD,CAAC;QACF,QAAQ,EAAE,yBAAyB;KACnC;IAED,KAAK,CAAC,OAAO,CAAC,GAAG;QAChB,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC;QAC9B,MAAM,EAAE,GAAG,MAAM,sBAAsB,CAAC,GAAG,CAAC,CAAC;QAE7C,MAAM,GAAG,GAAG,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACzC,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,GAAG,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;QAEpD,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YACpC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;gBACnB,GAAG,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,MAAM,aAAa,CAAC,CAAC;YAC7C,CAAC;YACD,OAAO;gBACN,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,OAAO,EAAE,gBAAgB;aACzB,CAAC;QACH,CAAC;QAED,IAAI,IAAa,CAAC;QAClB,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACrC,IAAI,CAAC;gBACJ,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAChC,CAAC;YAAC,MAAM,CAAC;gBACR,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;oBACnB,GAAG,CAAC,KAAK,CAAC,kCAAkC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC5D,CAAC;gBACD,OAAO;oBACN,OAAO,EAAE,KAAK;oBACd,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,OAAO,EAAE,4BAA4B;iBACrC,CAAC;YACH,CAAC;QACF,CAAC;aAAM,CAAC;YACP,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACpB,CAAC;QAED,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,IAAI,EAAE,CAAC;YACX,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;gBACnB,GAAG,CAAC,KAAK,CAAC,0BAA0B,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;YACpD,CAAC;YACD,OAAO;gBACN,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,OAAO,EAAE,oBAAoB;aAC7B,CAAC;QACH,CAAC;QAED,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC;QAEnC,IAAI,IAAI,CAAC,MAAM,KAAK,WAAW,IAAI,IAAI,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YAChE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;gBACnB,GAAG,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,MAAM,eAAe,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;YAC9D,CAAC;YACD,OAAO;gBACN,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,cAAc;gBACd,OAAO,EAAE,mBAAmB,IAAI,CAAC,MAAM,EAAE;aACzC,CAAC;QACH,CAAC;QAED,6BAA6B;QAC7B,MAAM,WAAW,GAAgB;YAChC,GAAG,IAAI;YACP,MAAM,EAAE,WAAW;YACnB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACnC,CAAC;QAEF,MAAM,EAAE,CAAC,GAAG,CAAC,iBAAiB,EAAE,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE;YACjE,WAAW,EAAE,kBAAkB;SAC/B,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YACnB,GAAG,CAAC,OAAO,CAAC,gBAAgB,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5C,CAAC;QAED,OAAO;YACN,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,cAAc;YACd,SAAS,EAAE,WAAW;YACtB,OAAO,EAAE,6BAA6B;SACtC,CAAC;IACH,CAAC;CACD,CAAC,CAAC;AAEH,eAAe,cAAc,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { KeyValueStorageService, type Logger } from '@agentuity/core';
|
|
2
|
+
import type { AuthData, Config } from '../../../types';
|
|
3
|
+
/** KV namespace for Cadence loop state */
|
|
4
|
+
export declare const CADENCE_NAMESPACE = "agentuity-opencode-tasks";
|
|
5
|
+
/** Prefix for loop state keys */
|
|
6
|
+
export declare const LOOP_KEY_PREFIX = "loop:";
|
|
7
|
+
export interface CadenceLoop {
|
|
8
|
+
loopId: string;
|
|
9
|
+
parentId?: string;
|
|
10
|
+
projectLabel?: string;
|
|
11
|
+
sessionId?: string;
|
|
12
|
+
status: 'running' | 'paused' | 'completed' | 'failed' | 'cancelled';
|
|
13
|
+
iteration: number;
|
|
14
|
+
maxIterations: number;
|
|
15
|
+
prompt: string;
|
|
16
|
+
createdAt: string;
|
|
17
|
+
updatedAt: string;
|
|
18
|
+
lastError?: string;
|
|
19
|
+
sandbox?: {
|
|
20
|
+
mode: 'off' | 'per_iteration' | 'persistent';
|
|
21
|
+
sandboxId?: string;
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
export interface CadenceContext {
|
|
25
|
+
logger: Logger;
|
|
26
|
+
config: Config | null;
|
|
27
|
+
auth: AuthData;
|
|
28
|
+
project?: {
|
|
29
|
+
region: string;
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Creates a KV storage service for Cadence operations.
|
|
34
|
+
*/
|
|
35
|
+
export declare function createCadenceKVAdapter(ctx: CadenceContext): Promise<KeyValueStorageService>;
|
|
36
|
+
/**
|
|
37
|
+
* Gets the state key for a loop.
|
|
38
|
+
*/
|
|
39
|
+
export declare function getLoopStateKey(loopId: string): string;
|
|
40
|
+
/**
|
|
41
|
+
* Parses a loop state from KV storage.
|
|
42
|
+
*/
|
|
43
|
+
export declare function parseLoopState(data: unknown): CadenceLoop | null;
|
|
44
|
+
//# sourceMappingURL=util.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../../src/cmd/ai/cadence/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,KAAK,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAGtE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAEvD,0CAA0C;AAC1C,eAAO,MAAM,iBAAiB,6BAA6B,CAAC;AAE5D,iCAAiC;AACjC,eAAO,MAAM,eAAe,UAAU,CAAC;AAEvC,MAAM,WAAW,WAAW;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;IACpE,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE;QACT,IAAI,EAAE,KAAK,GAAG,eAAe,GAAG,YAAY,CAAC;QAC7C,SAAS,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;CACF;AAED,MAAM,WAAW,cAAc;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CAC7B;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAcjG;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,WAAW,GAAG,IAAI,CAoBhE"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { KeyValueStorageService } from '@agentuity/core';
|
|
2
|
+
import { createServerFetchAdapter, getServiceUrls } from '@agentuity/server';
|
|
3
|
+
import { getDefaultRegion } from '../../../config';
|
|
4
|
+
/** KV namespace for Cadence loop state */
|
|
5
|
+
export const CADENCE_NAMESPACE = 'agentuity-opencode-tasks';
|
|
6
|
+
/** Prefix for loop state keys */
|
|
7
|
+
export const LOOP_KEY_PREFIX = 'loop:';
|
|
8
|
+
/**
|
|
9
|
+
* Creates a KV storage service for Cadence operations.
|
|
10
|
+
*/
|
|
11
|
+
export async function createCadenceKVAdapter(ctx) {
|
|
12
|
+
const adapter = createServerFetchAdapter({
|
|
13
|
+
headers: {
|
|
14
|
+
Authorization: `Bearer ${ctx.auth.apiKey}`,
|
|
15
|
+
},
|
|
16
|
+
}, ctx.logger);
|
|
17
|
+
const region = ctx.project?.region || (await getDefaultRegion(ctx.config?.name, ctx.config));
|
|
18
|
+
const urls = getServiceUrls(region);
|
|
19
|
+
const baseUrl = urls.catalyst;
|
|
20
|
+
return new KeyValueStorageService(baseUrl, adapter);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Gets the state key for a loop.
|
|
24
|
+
*/
|
|
25
|
+
export function getLoopStateKey(loopId) {
|
|
26
|
+
return `${LOOP_KEY_PREFIX}${loopId}:state`;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Parses a loop state from KV storage.
|
|
30
|
+
*/
|
|
31
|
+
export function parseLoopState(data) {
|
|
32
|
+
if (!data || typeof data !== 'object')
|
|
33
|
+
return null;
|
|
34
|
+
const loop = data;
|
|
35
|
+
if (!loop.loopId || !loop.status || !loop.prompt)
|
|
36
|
+
return null;
|
|
37
|
+
return {
|
|
38
|
+
loopId: String(loop.loopId),
|
|
39
|
+
parentId: loop.parentId ? String(loop.parentId) : undefined,
|
|
40
|
+
projectLabel: loop.projectLabel ? String(loop.projectLabel) : undefined,
|
|
41
|
+
sessionId: loop.sessionId ? String(loop.sessionId) : undefined,
|
|
42
|
+
status: loop.status,
|
|
43
|
+
iteration: Number(loop.iteration) || 1,
|
|
44
|
+
maxIterations: Number(loop.maxIterations) || 50,
|
|
45
|
+
prompt: String(loop.prompt),
|
|
46
|
+
createdAt: String(loop.createdAt),
|
|
47
|
+
updatedAt: String(loop.updatedAt),
|
|
48
|
+
lastError: loop.lastError ? String(loop.lastError) : undefined,
|
|
49
|
+
sandbox: loop.sandbox,
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=util.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../../../src/cmd/ai/cadence/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAe,MAAM,iBAAiB,CAAC;AACtE,OAAO,EAAE,wBAAwB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAGnD,0CAA0C;AAC1C,MAAM,CAAC,MAAM,iBAAiB,GAAG,0BAA0B,CAAC;AAE5D,iCAAiC;AACjC,MAAM,CAAC,MAAM,eAAe,GAAG,OAAO,CAAC;AA2BvC;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,GAAmB;IAC/D,MAAM,OAAO,GAAG,wBAAwB,CACvC;QACC,OAAO,EAAE;YACR,aAAa,EAAE,UAAU,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE;SAC1C;KACD,EACD,GAAG,CAAC,MAAM,CACV,CAAC;IAEF,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,MAAM,gBAAgB,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IAC7F,MAAM,IAAI,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IACpC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;IAC9B,OAAO,IAAI,sBAAsB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AACrD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,MAAc;IAC7C,OAAO,GAAG,eAAe,GAAG,MAAM,QAAQ,CAAC;AAC5C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,IAAa;IAC3C,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAEnD,MAAM,IAAI,GAAG,IAA+B,CAAC;IAC7C,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAE9D,OAAO;QACN,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;QAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS;QAC3D,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS;QACvE,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS;QAC9D,MAAM,EAAE,IAAI,CAAC,MAA+B;QAC5C,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;QACtC,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;QAC/C,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;QAC3B,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;QACjC,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;QACjC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS;QAC9D,OAAO,EAAE,IAAI,CAAC,OAAiC;KAC/C,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cmd/ai/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cmd/ai/index.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,OAAO,mCA+BlB,CAAC"}
|
package/dist/cmd/ai/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { createCommand } from '../../types';
|
|
2
|
+
import cadenceCommand from './cadence';
|
|
2
3
|
import capabilitiesCommand from './capabilities';
|
|
3
4
|
import promptCommand from './prompt';
|
|
4
5
|
import schemaCommand from './schema';
|
|
@@ -28,6 +29,13 @@ export const command = createCommand({
|
|
|
28
29
|
description: 'Generate Agent Skills from CLI schema',
|
|
29
30
|
},
|
|
30
31
|
],
|
|
31
|
-
subcommands: [
|
|
32
|
+
subcommands: [
|
|
33
|
+
opencodeCommand,
|
|
34
|
+
cadenceCommand,
|
|
35
|
+
capabilitiesCommand,
|
|
36
|
+
promptCommand,
|
|
37
|
+
schemaCommand,
|
|
38
|
+
skillsCommand,
|
|
39
|
+
],
|
|
32
40
|
});
|
|
33
41
|
//# sourceMappingURL=index.js.map
|
package/dist/cmd/ai/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cmd/ai/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,mBAAmB,MAAM,gBAAgB,CAAC;AACjD,OAAO,aAAa,MAAM,UAAU,CAAC;AACrC,OAAO,aAAa,MAAM,UAAU,CAAC;AACrC,OAAO,aAAa,MAAM,UAAU,CAAC;AACrC,OAAO,eAAe,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,MAAM,CAAC,MAAM,OAAO,GAAG,aAAa,CAAC;IACpC,IAAI,EAAE,IAAI;IACV,WAAW,EAAE,kCAAkC;IAC/C,gBAAgB,EAAE,IAAI;IACtB,IAAI,EAAE,CAAC,MAAM,CAAC;IACd,QAAQ,EAAE;QACT;YACC,OAAO,EAAE,UAAU,CAAC,qBAAqB,CAAC;YAC1C,WAAW,EAAE,oCAAoC;SACjD;QACD;YACC,OAAO,EAAE,UAAU,CAAC,sBAAsB,CAAC;YAC3C,WAAW,EAAE,qCAAqC;SAClD;QACD;YACC,OAAO,EAAE,UAAU,CAAC,gBAAgB,CAAC;YACrC,WAAW,EAAE,sCAAsC;SACnD;QACD;YACC,OAAO,EAAE,UAAU,CAAC,sCAAsC,CAAC;YAC3D,WAAW,EAAE,uCAAuC;SACpD;KACD;IACD,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cmd/ai/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,cAAc,MAAM,WAAW,CAAC;AACvC,OAAO,mBAAmB,MAAM,gBAAgB,CAAC;AACjD,OAAO,aAAa,MAAM,UAAU,CAAC;AACrC,OAAO,aAAa,MAAM,UAAU,CAAC;AACrC,OAAO,aAAa,MAAM,UAAU,CAAC;AACrC,OAAO,eAAe,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,MAAM,CAAC,MAAM,OAAO,GAAG,aAAa,CAAC;IACpC,IAAI,EAAE,IAAI;IACV,WAAW,EAAE,kCAAkC;IAC/C,gBAAgB,EAAE,IAAI;IACtB,IAAI,EAAE,CAAC,MAAM,CAAC;IACd,QAAQ,EAAE;QACT;YACC,OAAO,EAAE,UAAU,CAAC,qBAAqB,CAAC;YAC1C,WAAW,EAAE,oCAAoC;SACjD;QACD;YACC,OAAO,EAAE,UAAU,CAAC,sBAAsB,CAAC;YAC3C,WAAW,EAAE,qCAAqC;SAClD;QACD;YACC,OAAO,EAAE,UAAU,CAAC,gBAAgB,CAAC;YACrC,WAAW,EAAE,sCAAsC;SACnD;QACD;YACC,OAAO,EAAE,UAAU,CAAC,sCAAsC,CAAC;YAC3D,WAAW,EAAE,uCAAuC;SACpD;KACD;IACD,WAAW,EAAE;QACZ,eAAe;QACf,cAAc;QACd,mBAAmB;QACnB,aAAa;QACb,aAAa;QACb,aAAa;KACb;CACD,CAAC,CAAC"}
|