kyro-ai 3.3.0 → 3.3.2
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/.claude-plugin/plugin.json +1 -1
- package/WORKFLOW.yaml +1 -1
- package/dist/cli/adapters/codex.d.ts.map +1 -1
- package/dist/cli/adapters/codex.js +24 -0
- package/dist/cli/adapters/codex.js.map +1 -1
- package/dist/cli/adapters/command-skills.d.ts +3 -0
- package/dist/cli/adapters/command-skills.d.ts.map +1 -1
- package/dist/cli/adapters/command-skills.js +16 -4
- package/dist/cli/adapters/command-skills.js.map +1 -1
- package/dist/cli/adapters/detection.d.ts +5 -0
- package/dist/cli/adapters/detection.d.ts.map +1 -0
- package/dist/cli/adapters/detection.js +43 -0
- package/dist/cli/adapters/detection.js.map +1 -0
- package/dist/cli/adapters/opencode.d.ts.map +1 -1
- package/dist/cli/adapters/opencode.js +94 -7
- package/dist/cli/adapters/opencode.js.map +1 -1
- package/dist/cli/adapters/registry-types.d.ts +31 -0
- package/dist/cli/adapters/registry-types.d.ts.map +1 -1
- package/dist/cli/adapters/registry.d.ts.map +1 -1
- package/dist/cli/adapters/registry.js +34 -3
- package/dist/cli/adapters/registry.js.map +1 -1
- package/dist/cli/adapters/standard.d.ts.map +1 -1
- package/dist/cli/adapters/standard.js +25 -0
- package/dist/cli/adapters/standard.js.map +1 -1
- package/dist/cli/app.d.ts.map +1 -1
- package/dist/cli/app.js +4 -0
- package/dist/cli/app.js.map +1 -1
- package/dist/cli/commands/detect.d.ts +3 -0
- package/dist/cli/commands/detect.d.ts.map +1 -0
- package/dist/cli/commands/detect.js +39 -0
- package/dist/cli/commands/detect.js.map +1 -0
- package/dist/cli/commands/doctor.d.ts +1 -1
- package/dist/cli/commands/doctor.d.ts.map +1 -1
- package/dist/cli/commands/doctor.js +26 -2
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/install.d.ts.map +1 -1
- package/dist/cli/commands/install.js +25 -2
- package/dist/cli/commands/install.js.map +1 -1
- package/dist/cli/commands/preflight.d.ts +11 -0
- package/dist/cli/commands/preflight.d.ts.map +1 -0
- package/dist/cli/commands/preflight.js +50 -0
- package/dist/cli/commands/preflight.js.map +1 -0
- package/dist/cli/commands/tui.d.ts.map +1 -1
- package/dist/cli/commands/tui.js +19 -3
- package/dist/cli/commands/tui.js.map +1 -1
- package/dist/cli/commands/uninstall.d.ts.map +1 -1
- package/dist/cli/commands/uninstall.js +34 -7
- package/dist/cli/commands/uninstall.js.map +1 -1
- package/dist/cli/drift.d.ts +19 -0
- package/dist/cli/drift.d.ts.map +1 -0
- package/dist/cli/drift.js +136 -0
- package/dist/cli/drift.js.map +1 -0
- package/dist/cli/fs.d.ts.map +1 -1
- package/dist/cli/fs.js +6 -70
- package/dist/cli/fs.js.map +1 -1
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/help.js +12 -3
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/injectors/json-merge.d.ts +3 -0
- package/dist/cli/injectors/json-merge.d.ts.map +1 -0
- package/dist/cli/injectors/json-merge.js +136 -0
- package/dist/cli/injectors/json-merge.js.map +1 -0
- package/dist/cli/injectors/managed-block.d.ts +7 -0
- package/dist/cli/injectors/managed-block.d.ts.map +1 -0
- package/dist/cli/injectors/managed-block.js +39 -0
- package/dist/cli/injectors/managed-block.js.map +1 -0
- package/dist/cli/options.d.ts.map +1 -1
- package/dist/cli/options.js +20 -0
- package/dist/cli/options.js.map +1 -1
- package/dist/cli/pipeline/operation-steps.d.ts +10 -0
- package/dist/cli/pipeline/operation-steps.d.ts.map +1 -0
- package/dist/cli/pipeline/operation-steps.js +141 -0
- package/dist/cli/pipeline/operation-steps.js.map +1 -0
- package/dist/cli/pipeline/orchestrator.d.ts +12 -0
- package/dist/cli/pipeline/orchestrator.d.ts.map +1 -0
- package/dist/cli/pipeline/orchestrator.js +111 -0
- package/dist/cli/pipeline/orchestrator.js.map +1 -0
- package/dist/cli/pipeline/types.d.ts +40 -0
- package/dist/cli/pipeline/types.d.ts.map +1 -0
- package/dist/cli/pipeline/types.js +3 -0
- package/dist/cli/pipeline/types.js.map +1 -0
- package/dist/cli/types.d.ts +6 -1
- package/dist/cli/types.d.ts.map +1 -1
- package/docs/HOW-TO-USE-OPENCODE.md +10 -6
- package/docs/agent-adapters.md +9 -4
- package/docs/cli.md +48 -2
- package/docs/getting-started.md +8 -0
- package/package.json +3 -2
- package/scripts/check-adapter-fixtures.mjs +595 -0
- package/skills/sprint-forge/assets/modes/ad3c-cycle.md +89 -0
- package/skills/sprint-forge/assets/modes/execute-task.md +5 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operation-steps.js","sourceRoot":"","sources":["../../../src/cli/pipeline/operation-steps.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { FailurePolicy, PipelineResult, ProgressCallback, StagePlan } from './types';
|
|
2
|
+
export declare class PipelineOrchestrator {
|
|
3
|
+
private readonly policy;
|
|
4
|
+
private readonly onProgress?;
|
|
5
|
+
constructor(policy?: FailurePolicy, onProgress?: ProgressCallback | undefined);
|
|
6
|
+
execute(plan: StagePlan): PipelineResult;
|
|
7
|
+
private runStage;
|
|
8
|
+
private rollback;
|
|
9
|
+
private validatePlan;
|
|
10
|
+
private emit;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=orchestrator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../../src/cli/pipeline/orchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,gBAAgB,EAAS,SAAS,EAAiC,MAAM,SAAS,CAAC;AAEhI,qBAAa,oBAAoB;IAE7B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC;gBADX,MAAM,GAAE,aAA+B,EACvC,UAAU,CAAC,EAAE,gBAAgB,YAAA;IAGhD,OAAO,CAAC,IAAI,EAAE,SAAS,GAAG,cAAc;IAqBxC,OAAO,CAAC,QAAQ;IA6BhB,OAAO,CAAC,QAAQ;IAwBhB,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,IAAI;CAGb"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PipelineOrchestrator = void 0;
|
|
4
|
+
class PipelineOrchestrator {
|
|
5
|
+
policy;
|
|
6
|
+
onProgress;
|
|
7
|
+
constructor(policy = 'stop-on-error', onProgress) {
|
|
8
|
+
this.policy = policy;
|
|
9
|
+
this.onProgress = onProgress;
|
|
10
|
+
}
|
|
11
|
+
execute(plan) {
|
|
12
|
+
this.validatePlan(plan);
|
|
13
|
+
const stepById = new Map();
|
|
14
|
+
for (const step of [...plan.prepare, ...plan.apply])
|
|
15
|
+
stepById.set(step.id, step);
|
|
16
|
+
const prepare = this.runStage('prepare', plan.prepare);
|
|
17
|
+
if (!prepare.success)
|
|
18
|
+
return { prepare, apply: emptyStage('apply'), error: prepare.error };
|
|
19
|
+
const apply = this.runStage('apply', plan.apply);
|
|
20
|
+
const result = { prepare, apply };
|
|
21
|
+
if (apply.success)
|
|
22
|
+
return result;
|
|
23
|
+
result.error = apply.error;
|
|
24
|
+
const rollback = this.rollback(apply.steps, stepById);
|
|
25
|
+
result.rollback = rollback;
|
|
26
|
+
if (!rollback.success) {
|
|
27
|
+
result.error = new Error(`Apply failed: ${apply.error?.message}. Rollback also failed: ${rollback.error?.message}`);
|
|
28
|
+
}
|
|
29
|
+
return result;
|
|
30
|
+
}
|
|
31
|
+
runStage(stage, steps) {
|
|
32
|
+
const results = [];
|
|
33
|
+
const errors = [];
|
|
34
|
+
for (const step of steps) {
|
|
35
|
+
this.emit(stage, step.id, 'running');
|
|
36
|
+
const startedAt = new Date();
|
|
37
|
+
try {
|
|
38
|
+
step.run();
|
|
39
|
+
const result = { stepId: step.id, status: 'succeeded', startedAt, finishedAt: new Date() };
|
|
40
|
+
results.push(result);
|
|
41
|
+
this.emit(stage, step.id, 'succeeded');
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
const err = asError(error);
|
|
45
|
+
const result = { stepId: step.id, status: 'failed', startedAt, finishedAt: new Date(), error: err };
|
|
46
|
+
results.push(result);
|
|
47
|
+
errors.push(err);
|
|
48
|
+
this.emit(stage, step.id, 'failed', err);
|
|
49
|
+
if (this.policy === 'stop-on-error')
|
|
50
|
+
return { stage, success: false, steps: results, error: err };
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return {
|
|
54
|
+
stage,
|
|
55
|
+
success: errors.length === 0,
|
|
56
|
+
steps: results,
|
|
57
|
+
error: joinErrors(errors),
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
rollback(applyResults, stepById) {
|
|
61
|
+
const steps = [];
|
|
62
|
+
for (let index = applyResults.length - 1; index >= 0; index -= 1) {
|
|
63
|
+
const applied = applyResults[index];
|
|
64
|
+
if (applied.status !== 'succeeded')
|
|
65
|
+
continue;
|
|
66
|
+
const step = stepById.get(applied.stepId);
|
|
67
|
+
if (!step?.rollback)
|
|
68
|
+
continue;
|
|
69
|
+
this.emit('rollback', step.id, 'running');
|
|
70
|
+
const startedAt = new Date();
|
|
71
|
+
try {
|
|
72
|
+
step.rollback();
|
|
73
|
+
steps.push({ stepId: step.id, status: 'rolled-back', startedAt, finishedAt: new Date() });
|
|
74
|
+
this.emit('rollback', step.id, 'rolled-back');
|
|
75
|
+
}
|
|
76
|
+
catch (error) {
|
|
77
|
+
const err = asError(error);
|
|
78
|
+
steps.push({ stepId: step.id, status: 'failed', startedAt, finishedAt: new Date(), error: err });
|
|
79
|
+
this.emit('rollback', step.id, 'failed', err);
|
|
80
|
+
return { stage: 'rollback', success: false, steps, error: err };
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return { stage: 'rollback', success: true, steps };
|
|
84
|
+
}
|
|
85
|
+
validatePlan(plan) {
|
|
86
|
+
const seen = new Set();
|
|
87
|
+
for (const step of [...plan.prepare, ...plan.apply]) {
|
|
88
|
+
if (seen.has(step.id))
|
|
89
|
+
throw new Error(`Duplicate pipeline step id: ${step.id}`);
|
|
90
|
+
seen.add(step.id);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
emit(stage, stepId, status, error) {
|
|
94
|
+
this.onProgress?.({ stage, stepId, status, error });
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
exports.PipelineOrchestrator = PipelineOrchestrator;
|
|
98
|
+
function emptyStage(stage) {
|
|
99
|
+
return { stage, success: true, steps: [] };
|
|
100
|
+
}
|
|
101
|
+
function asError(error) {
|
|
102
|
+
return error instanceof Error ? error : new Error(String(error));
|
|
103
|
+
}
|
|
104
|
+
function joinErrors(errors) {
|
|
105
|
+
if (errors.length === 0)
|
|
106
|
+
return undefined;
|
|
107
|
+
if (errors.length === 1)
|
|
108
|
+
return errors[0];
|
|
109
|
+
return new Error(errors.map((error) => error.message).join('\n'));
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=orchestrator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../../src/cli/pipeline/orchestrator.ts"],"names":[],"mappings":";;;AAEA,MAAa,oBAAoB;IAEZ;IACA;IAFnB,YACmB,SAAwB,eAAe,EACvC,UAA6B;QAD7B,WAAM,GAAN,MAAM,CAAiC;QACvC,eAAU,GAAV,UAAU,CAAmB;IAC7C,CAAC;IAEJ,OAAO,CAAC,IAAe;QACrB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACxB,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAgB,CAAC;QACzC,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;YAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAEjF,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACvD,IAAI,CAAC,OAAO,CAAC,OAAO;YAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC;QAE3F,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACjD,MAAM,MAAM,GAAmB,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QAClD,IAAI,KAAK,CAAC,OAAO;YAAE,OAAO,MAAM,CAAC;QAEjC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QACtD,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC3B,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;YACtB,MAAM,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,iBAAiB,KAAK,CAAC,KAAK,EAAE,OAAO,2BAA2B,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QACtH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,QAAQ,CAAC,KAAY,EAAE,KAAa;QAC1C,MAAM,OAAO,GAAiB,EAAE,CAAC;QACjC,MAAM,MAAM,GAAY,EAAE,CAAC;QAC3B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;YACrC,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;YAC7B,IAAI,CAAC;gBACH,IAAI,CAAC,GAAG,EAAE,CAAC;gBACX,MAAM,MAAM,GAAe,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,IAAI,EAAE,EAAE,CAAC;gBACvG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACrB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;YACzC,CAAC;YAAC,OAAO,KAAc,EAAE,CAAC;gBACxB,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;gBAC3B,MAAM,MAAM,GAAe,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,IAAI,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;gBAChH,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACrB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACjB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;gBACzC,IAAI,IAAI,CAAC,MAAM,KAAK,eAAe;oBAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;YACpG,CAAC;QACH,CAAC;QAED,OAAO;YACL,KAAK;YACL,OAAO,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC;YAC5B,KAAK,EAAE,OAAO;YACd,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC;SAC1B,CAAC;IACJ,CAAC;IAEO,QAAQ,CAAC,YAA0B,EAAE,QAA2B;QACtE,MAAM,KAAK,GAAiB,EAAE,CAAC;QAC/B,KAAK,IAAI,KAAK,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;YACjE,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;YACpC,IAAI,OAAO,CAAC,MAAM,KAAK,WAAW;gBAAE,SAAS;YAC7C,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC1C,IAAI,CAAC,IAAI,EAAE,QAAQ;gBAAE,SAAS;YAE9B,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;YAC1C,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;YAC7B,IAAI,CAAC;gBACH,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAChB,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC;gBAC1F,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;YAChD,CAAC;YAAC,OAAO,KAAc,EAAE,CAAC;gBACxB,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;gBAC3B,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,IAAI,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;gBACjG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;gBAC9C,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;YAClE,CAAC;QACH,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IACrD,CAAC;IAEO,YAAY,CAAC,IAAe;QAClC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAC/B,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACpD,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;YACjF,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;IAEO,IAAI,CAAC,KAAY,EAAE,MAAc,EAAE,MAA4B,EAAE,KAAa;QACpF,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IACtD,CAAC;CACF;AA3FD,oDA2FC;AAED,SAAS,UAAU,CAAC,KAAY;IAC9B,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;AAC7C,CAAC;AAED,SAAS,OAAO,CAAC,KAAc;IAC7B,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AACnE,CAAC;AAED,SAAS,UAAU,CAAC,MAAe;IACjC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC1C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;IAC1C,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACpE,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
export type Stage = 'prepare' | 'apply' | 'rollback';
|
|
2
|
+
export type StepStatus = 'pending' | 'running' | 'succeeded' | 'failed' | 'rolled-back';
|
|
3
|
+
export type FailurePolicy = 'stop-on-error' | 'continue-on-error';
|
|
4
|
+
export interface ProgressEvent {
|
|
5
|
+
stage: Stage;
|
|
6
|
+
stepId: string;
|
|
7
|
+
status: StepStatus;
|
|
8
|
+
error?: Error;
|
|
9
|
+
}
|
|
10
|
+
export type ProgressCallback = (event: ProgressEvent) => void;
|
|
11
|
+
export interface Step {
|
|
12
|
+
readonly id: string;
|
|
13
|
+
readonly description: string;
|
|
14
|
+
run(): void;
|
|
15
|
+
rollback?(): void;
|
|
16
|
+
}
|
|
17
|
+
export interface StagePlan {
|
|
18
|
+
prepare: Step[];
|
|
19
|
+
apply: Step[];
|
|
20
|
+
}
|
|
21
|
+
export interface StepResult {
|
|
22
|
+
stepId: string;
|
|
23
|
+
status: StepStatus;
|
|
24
|
+
startedAt: Date;
|
|
25
|
+
finishedAt?: Date;
|
|
26
|
+
error?: Error;
|
|
27
|
+
}
|
|
28
|
+
export interface StageResult {
|
|
29
|
+
stage: Stage;
|
|
30
|
+
success: boolean;
|
|
31
|
+
steps: StepResult[];
|
|
32
|
+
error?: Error;
|
|
33
|
+
}
|
|
34
|
+
export interface PipelineResult {
|
|
35
|
+
prepare: StageResult;
|
|
36
|
+
apply: StageResult;
|
|
37
|
+
rollback?: StageResult;
|
|
38
|
+
error?: Error;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/cli/pipeline/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,KAAK,GAAG,SAAS,GAAG,OAAO,GAAG,UAAU,CAAC;AACrD,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,aAAa,CAAC;AACxF,MAAM,MAAM,aAAa,GAAG,eAAe,GAAG,mBAAmB,CAAC;AAElE,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,UAAU,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED,MAAM,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;AAE9D,MAAM,WAAW,IAAI;IACnB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,GAAG,IAAI,IAAI,CAAC;IACZ,QAAQ,CAAC,IAAI,IAAI,CAAC;CACnB;AAED,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,IAAI,EAAE,CAAC;IAChB,KAAK,EAAE,IAAI,EAAE,CAAC;CACf;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,UAAU,CAAC;IACnB,SAAS,EAAE,IAAI,CAAC;IAChB,UAAU,CAAC,EAAE,IAAI,CAAC;IAClB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,WAAW,CAAC;IACrB,KAAK,EAAE,WAAW,CAAC;IACnB,QAAQ,CAAC,EAAE,WAAW,CAAC;IACvB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/cli/pipeline/types.ts"],"names":[],"mappings":""}
|
package/dist/cli/types.d.ts
CHANGED
|
@@ -37,14 +37,19 @@ export interface CliOptions {
|
|
|
37
37
|
help: boolean;
|
|
38
38
|
tokens: boolean;
|
|
39
39
|
artifacts: boolean;
|
|
40
|
+
adapters: boolean;
|
|
40
41
|
kyroScope: string | null;
|
|
42
|
+
json: boolean;
|
|
43
|
+
purgeAdapterAssets: boolean;
|
|
44
|
+
prune: boolean;
|
|
41
45
|
}
|
|
42
46
|
export interface OperationPlan {
|
|
43
|
-
action: 'write' | 'copy' | 'mkdir' | 'remove' | 'upsert-block' | 'remove-block' | 'symlink';
|
|
47
|
+
action: 'write' | 'copy' | 'mkdir' | 'remove' | 'rmdir-if-empty' | 'upsert-block' | 'remove-block' | 'symlink' | 'merge-json' | 'remove-json-key';
|
|
44
48
|
path: string;
|
|
45
49
|
source?: string;
|
|
46
50
|
content?: string;
|
|
47
51
|
blockName?: string;
|
|
52
|
+
jsonPath?: string;
|
|
48
53
|
}
|
|
49
54
|
export interface CheckResult {
|
|
50
55
|
status: 'pass' | 'warn' | 'fail';
|
package/dist/cli/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/cli/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAE/D,MAAM,MAAM,KAAK,GAAG,CAAC,OAAO,KAAK,CAAC,CAAC,MAAM,OAAO,KAAK,CAAC,CAAC;AACvD,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,KAAK,CAAC,CAAC,MAAM,OAAO,KAAK,CAAC,CAAC;AAC9D,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAE7D,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,EAAE,YAAY,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,aAAa,EAAE,CAAC,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,oBAAoB,EAAE,CAAC;CAC3C;AAED,MAAM,WAAW,YAAY;IAC3B,aAAa,EAAE,CAAC,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,YAAY,CAAC;IAC3B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,QAAQ,EAAE,oBAAoB,EAAE,CAAC;CAClC;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,KAAK,EAAE,YAAY,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,GAAG,EAAE,OAAO,CAAC;IACb,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/cli/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAE/D,MAAM,MAAM,KAAK,GAAG,CAAC,OAAO,KAAK,CAAC,CAAC,MAAM,OAAO,KAAK,CAAC,CAAC;AACvD,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,KAAK,CAAC,CAAC,MAAM,OAAO,KAAK,CAAC,CAAC;AAC9D,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAE7D,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,EAAE,YAAY,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,aAAa,EAAE,CAAC,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,oBAAoB,EAAE,CAAC;CAC3C;AAED,MAAM,WAAW,YAAY;IAC3B,aAAa,EAAE,CAAC,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,YAAY,CAAC;IAC3B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,QAAQ,EAAE,oBAAoB,EAAE,CAAC;CAClC;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,KAAK,EAAE,YAAY,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,GAAG,EAAE,OAAO,CAAC;IACb,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,IAAI,EAAE,OAAO,CAAC;IACd,kBAAkB,EAAE,OAAO,CAAC;IAC5B,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,gBAAgB,GAAG,cAAc,GAAG,cAAc,GAAG,SAAS,GAAG,YAAY,GAAG,iBAAiB,CAAC;IAClJ,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# OpenCode Adapter Guide
|
|
2
2
|
|
|
3
|
-
OpenCode should discover Kyro through
|
|
3
|
+
OpenCode should discover Kyro through native OpenCode skills and slash commands. Do not copy Kyro core into each project.
|
|
4
4
|
|
|
5
5
|
## Setup
|
|
6
6
|
|
|
@@ -11,19 +11,23 @@ npx kyro-ai install --agent opencode --scope workspace --yes
|
|
|
11
11
|
This installs:
|
|
12
12
|
|
|
13
13
|
- global runtime: `~/.agents/kyro/current/`
|
|
14
|
-
-
|
|
14
|
+
- native OpenCode skills: `~/.config/opencode/skills/kyro-*`
|
|
15
|
+
- native OpenCode commands: `~/.config/opencode/commands/kyro/*.md`
|
|
16
|
+
- OpenCode agent overlay: `~/.config/opencode/opencode.json` key `agent.kyro-orchestrator`
|
|
15
17
|
- project state: `.agents/kyro/kyro.json`
|
|
16
18
|
|
|
17
19
|
## Usage
|
|
18
20
|
|
|
19
|
-
Use the installed command-like skills:
|
|
21
|
+
Use the installed commands or command-like skills:
|
|
20
22
|
|
|
21
|
-
- `kyro-forge` — route analyze/plan/execute/review/close
|
|
22
|
-
- `kyro-status` — summary-first progress and debt report
|
|
23
|
-
- `kyro-wrap-up` — close session and refresh handoff context
|
|
23
|
+
- `/kyro/forge` or `kyro-forge` — route analyze/plan/execute/review/close
|
|
24
|
+
- `/kyro/status` or `kyro-status` — summary-first progress and debt report
|
|
25
|
+
- `/kyro/wrap-up` or `kyro-wrap-up` — close session and refresh handoff context
|
|
24
26
|
|
|
25
27
|
Each skill is intentionally tiny. It loads the command router first, then only the mode/helper/template needed for the current step.
|
|
26
28
|
|
|
29
|
+
Kyro owns only the `agent.kyro-orchestrator` entry in `opencode.json`. Existing models, agents, MCP servers, providers, and other OpenCode settings are preserved.
|
|
30
|
+
|
|
27
31
|
## Artifacts
|
|
28
32
|
|
|
29
33
|
Save workflow artifacts under:
|
package/docs/agent-adapters.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Agent Adapters
|
|
2
2
|
|
|
3
|
-
Kyro's adapter contract is: global runtime,
|
|
3
|
+
Kyro's adapter contract is: global runtime, adapter command entrypoints, and local project state. Agents should invoke Kyro through command-like skills or slash commands, not by loading the full workflow manually.
|
|
4
4
|
|
|
5
5
|
## Stable interface
|
|
6
6
|
|
|
@@ -8,7 +8,10 @@ Kyro's adapter contract is: global runtime, global command skills, local project
|
|
|
8
8
|
|-----------|---------|
|
|
9
9
|
| `~/.agents/kyro/current/commands/*.md` | Thin command routers |
|
|
10
10
|
| `~/.agents/kyro/current/skills/sprint-forge/` | Lazy-loaded workflow modes, helpers, templates |
|
|
11
|
-
| `~/.agents/skills/kyro-*` |
|
|
11
|
+
| `~/.agents/skills/kyro-*` | Standard global command skills discovered by compatible agents |
|
|
12
|
+
| `~/.config/opencode/skills/kyro-*` | Native OpenCode command skills |
|
|
13
|
+
| `~/.config/opencode/commands/kyro/*.md` | Native OpenCode slash commands |
|
|
14
|
+
| `~/.config/opencode/opencode.json` `agent.kyro-orchestrator` | Kyro-owned OpenCode agent overlay |
|
|
12
15
|
| `.agents/kyro/kyro.json` | Project-level Kyro state |
|
|
13
16
|
| `.agents/kyro/scopes/{scope}/` | Scope artifacts, state, summaries, roadmap, sprints |
|
|
14
17
|
| root `AGENTS.md` | Small Codex/cross-agent bootstrap when the Codex adapter is installed |
|
|
@@ -26,7 +29,7 @@ Implemented adapters:
|
|
|
26
29
|
| Adapter | Behavior |
|
|
27
30
|
|---------|----------|
|
|
28
31
|
| `standard` | Installs global `kyro-*` command skills for compatible agents. |
|
|
29
|
-
| `opencode` |
|
|
32
|
+
| `opencode` | Installs native OpenCode skills, `/kyro/*` command markdown, and a Kyro-owned `agent.kyro-orchestrator` overlay. |
|
|
30
33
|
| `codex` | Adds global command skills plus a small Kyro block in root `AGENTS.md`. |
|
|
31
34
|
|
|
32
35
|
There is intentionally no generic adapter. Root `AGENTS.md` is the standard cross-agent bootstrap.
|
|
@@ -59,7 +62,9 @@ Use:
|
|
|
59
62
|
npx kyro-ai install --agent opencode --scope workspace --yes
|
|
60
63
|
```
|
|
61
64
|
|
|
62
|
-
OpenCode should invoke
|
|
65
|
+
OpenCode should invoke the native `/kyro/forge`, `/kyro/status`, and `/kyro/wrap-up` commands, or the installed `kyro-*` skills under `~/.config/opencode/skills/`. It should not copy Kyro core into the project.
|
|
66
|
+
|
|
67
|
+
Kyro preserves existing `opencode.json` content and owns only `agent.kyro-orchestrator`. MCP merge is not enabled until there is a concrete Kyro MCP server contract.
|
|
63
68
|
|
|
64
69
|
## Claude
|
|
65
70
|
|
package/docs/cli.md
CHANGED
|
@@ -65,7 +65,7 @@ Implemented workspace adapters:
|
|
|
65
65
|
| Adapter | Purpose |
|
|
66
66
|
| --- | --- |
|
|
67
67
|
| `standard` | Base `~/.agents/skills/kyro-*` command skill projection for compatible agents |
|
|
68
|
-
| `opencode` | OpenCode
|
|
68
|
+
| `opencode` | Native OpenCode skills, commands under `~/.config/opencode/commands/kyro/`, and `agent.kyro-orchestrator` in `opencode.json` |
|
|
69
69
|
| `codex` | Codex adapter with projected Kyro command skills plus a managed root `AGENTS.md` block |
|
|
70
70
|
|
|
71
71
|
Default install uses `standard`:
|
|
@@ -83,7 +83,7 @@ kyro install --agent codex --scope workspace --yes
|
|
|
83
83
|
kyro install --agent standard,opencode,codex --scope workspace --yes
|
|
84
84
|
```
|
|
85
85
|
|
|
86
|
-
The adapters project Kyro workflows into
|
|
86
|
+
The adapters project Kyro workflows into concrete agent entrypoints so compatible agents can discover command-like skills without asking the user to invoke Kyro through prose. `standard` and `codex` use `~/.agents/skills/`; OpenCode uses its native config tree and preserves non-Kyro `opencode.json` keys.
|
|
87
87
|
|
|
88
88
|
Projected skills:
|
|
89
89
|
|
|
@@ -93,6 +93,24 @@ Projected skills:
|
|
|
93
93
|
|
|
94
94
|
Each projected skill references the managed Kyro runtime in `~/.agents/kyro/current/` instead of duplicating long workflow instructions.
|
|
95
95
|
|
|
96
|
+
## Uninstall
|
|
97
|
+
|
|
98
|
+
Default uninstall removes project bootstraps and adapter overlays, but preserves adapter entrypoint files:
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
kyro uninstall --yes
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
To remove adapter-owned entrypoint files as well:
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
kyro uninstall --purge-adapter-assets --yes
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
Purge removes only files declared by the installed adapter, then removes Kyro-owned directories if they are empty. Shared config files such as `~/.config/opencode/opencode.json` are preserved; Kyro removes only its owned overlay key.
|
|
111
|
+
|
|
112
|
+
The uninstall output includes a summary with overlay, purged file, and empty-directory counts.
|
|
113
|
+
|
|
96
114
|
## State Model
|
|
97
115
|
|
|
98
116
|
`kyro install` creates only root project state:
|
|
@@ -175,6 +193,34 @@ kyro sync --agent standard --dry-run
|
|
|
175
193
|
kyro sync --agent codex --dry-run
|
|
176
194
|
```
|
|
177
195
|
|
|
196
|
+
### Drift And Prune
|
|
197
|
+
|
|
198
|
+
`kyro sync` reports drift when old manifests point to stale runtime versions or obsolete Kyro-owned adapter entrypoint files.
|
|
199
|
+
|
|
200
|
+
Use prune to clean drift during sync:
|
|
201
|
+
|
|
202
|
+
```bash
|
|
203
|
+
kyro sync --prune
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
`--prune` may remove:
|
|
207
|
+
|
|
208
|
+
- stale runtime version directories under `~/.agents/kyro/versions/`, except the current package version.
|
|
209
|
+
- obsolete Kyro-owned adapter entrypoint files previously declared by old manifests:
|
|
210
|
+
- `~/.agents/skills/kyro-*`
|
|
211
|
+
- `~/.config/opencode/skills/kyro-*`
|
|
212
|
+
- `~/.config/opencode/commands/kyro/*`
|
|
213
|
+
|
|
214
|
+
`--prune` preserves:
|
|
215
|
+
|
|
216
|
+
- current runtime files declared by the new manifest.
|
|
217
|
+
- project state, scopes, roadmap files, sprint files, and summaries under `.agents/kyro/scopes/`.
|
|
218
|
+
- shared agent config files such as `~/.config/opencode/opencode.json`.
|
|
219
|
+
|
|
220
|
+
If an old manifest lists shared config, sync reports it under `Shared config preserved` instead of pruning it.
|
|
221
|
+
|
|
222
|
+
`--prune` is different from `kyro uninstall --purge-adapter-assets`. Prune cleans sync drift by comparing old manifests against the current install plan. Purge removes adapter entrypoint files during uninstall for adapters recorded in the installed project state. Neither mode removes shared user config.
|
|
223
|
+
|
|
178
224
|
## Claude Plugin Support
|
|
179
225
|
|
|
180
226
|
The Claude plugin adapter remains first-class through `.claude-plugin/`. The CLI does not replace it; it complements Kyro's adapter story for agents that need workspace-installed commands, skills, root `AGENTS.md` managed blocks, and core assets.
|
package/docs/getting-started.md
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "kyro-ai",
|
|
3
|
-
"version": "3.3.
|
|
3
|
+
"version": "3.3.2",
|
|
4
4
|
"description": "Portable sprint workflow kit for AI coding agents, with markdown artifacts, adapter guides, and formal debt tracking",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -15,7 +15,8 @@
|
|
|
15
15
|
"build:chmod": "node scripts/make-cli-executable.mjs",
|
|
16
16
|
"check:tokens": "node dist/cli.js doctor --tokens",
|
|
17
17
|
"check:artifacts": "node dist/cli.js doctor --artifacts",
|
|
18
|
-
"check:artifact-fixtures": "node scripts/check-artifact-fixtures.mjs"
|
|
18
|
+
"check:artifact-fixtures": "node scripts/check-artifact-fixtures.mjs",
|
|
19
|
+
"check:adapters": "node scripts/check-adapter-fixtures.mjs"
|
|
19
20
|
},
|
|
20
21
|
"keywords": [
|
|
21
22
|
"ai-agents",
|