@dadado/agent-kit-cli 5.16.0 → 5.18.0

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.
Files changed (40) hide show
  1. package/dashboard/README.md +10 -1
  2. package/dashboard/dashboard-data.mjs +12 -2
  3. package/dashboard/dashboard.html +58 -0
  4. package/dashboard/lib/run-logs.d.mts +34 -0
  5. package/dashboard/lib/run-logs.mjs +218 -0
  6. package/dist/{add-7UMSGVWC.js → add-KQJE3ZTG.js} +3 -3
  7. package/dist/{chunk-KD2MYBB6.js → chunk-3J3I2W22.js} +1 -1
  8. package/dist/{chunk-YGBBHKBE.js → chunk-6FXQINND.js} +2 -2
  9. package/dist/{chunk-OUQZC744.js → chunk-B5CH47OS.js} +852 -74
  10. package/dist/chunk-C26I6HTO.js +39 -0
  11. package/dist/{chunk-6QV2BFGA.js → chunk-GSCXFJB7.js} +1 -1
  12. package/dist/{chunk-KI6ZHBPV.js → chunk-HRILMD5N.js} +312 -11
  13. package/dist/{chunk-OZ4QV6LM.js → chunk-KIXK7KOW.js} +42 -148
  14. package/dist/chunk-P6PMKYWU.js +50 -0
  15. package/dist/{chunk-WW3YZKHW.js → chunk-RZ5TNBHU.js} +25 -4
  16. package/dist/{chunk-TFZ2JUXH.js → chunk-TOWH3XCJ.js} +520 -70
  17. package/dist/{chunk-CGTE7DHN.js → chunk-TZYKLR5J.js} +135 -20
  18. package/dist/{chunk-5OXPNVCF.js → chunk-UEKWZ7BN.js} +2 -2
  19. package/dist/chunk-WGLPZXNU.js +45 -0
  20. package/dist/{chunk-VS2JD2XC.js → chunk-WSJ77EHO.js} +5 -2
  21. package/dist/{chunk-VGZBARQC.js → chunk-YJMZ6UM2.js} +2 -2
  22. package/dist/{chunk-XZZAVHH4.js → chunk-YMYLO5LG.js} +2 -2
  23. package/dist/{chunk-XWPO3VYQ.js → chunk-ZDCEAGD4.js} +1 -1
  24. package/dist/{contribute-YKK6YCSI.js → contribute-LFT762Y4.js} +4 -4
  25. package/dist/{diff-YTR7VOAN.js → diff-56KMRCER.js} +5 -5
  26. package/dist/doctor-AA64XVEY.js +237 -0
  27. package/dist/{handoff-3UI6VKVG.js → handoff-34SDU4FF.js} +2 -2
  28. package/dist/{hook-MUV6Y7UW.js → hook-KRIXBLNW.js} +7 -7
  29. package/dist/index.js +19 -17
  30. package/dist/{init-TTTKGC4C.js → init-XP5EAUSJ.js} +12 -11
  31. package/dist/{install-ZMFJBPOI.js → install-SHDEX54F.js} +12 -11
  32. package/dist/{plan-index-JMC7Z4DW.js → plan-index-O3545OA7.js} +2 -2
  33. package/dist/{run-I3BFGULT.js → run-FADX6QCP.js} +6 -5
  34. package/dist/{run-plan-FO7CL4M3.js → run-plan-MO4IFAKV.js} +36 -5
  35. package/dist/{setup-global-JUVMJXJ5.js → setup-global-CBWLXOQG.js} +6 -6
  36. package/dist/{status-MVCUNCWX.js → status-BSIXWZMY.js} +19 -7
  37. package/dist/{update-Q4EBIRUB.js → update-FJX3DA6X.js} +33 -10
  38. package/package.json +3 -3
  39. package/dist/chunk-5VCOWTTP.js +0 -6
  40. package/dist/doctor-TA2FWREU.js +0 -497
package/dist/index.js CHANGED
@@ -1,8 +1,9 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  rewriteRootArgvToRun
4
- } from "./chunk-WW3YZKHW.js";
5
- import "./chunk-OUQZC744.js";
4
+ } from "./chunk-RZ5TNBHU.js";
5
+ import "./chunk-B5CH47OS.js";
6
+ import "./chunk-WGLPZXNU.js";
6
7
  import "./chunk-MAPOQEA2.js";
7
8
  import {
8
9
  HELMET_OUTLINE,
@@ -15,6 +16,7 @@ import {
15
16
  import {
16
17
  KIT_VERSION
17
18
  } from "./chunk-7HDQEK6T.js";
19
+ import "./chunk-C26I6HTO.js";
18
20
  import "./chunk-77V75A7O.js";
19
21
 
20
22
  // src/index.ts
@@ -211,29 +213,29 @@ var main = defineCommand({
211
213
  version: KIT_VERSION
212
214
  },
213
215
  subCommands: {
214
- init: () => import("./init-TTTKGC4C.js").then((m) => m.initCommand),
215
- install: () => import("./install-ZMFJBPOI.js").then((m) => m.installCommand),
216
+ init: () => import("./init-XP5EAUSJ.js").then((m) => m.initCommand),
217
+ install: () => import("./install-SHDEX54F.js").then((m) => m.installCommand),
216
218
  scan: () => import("./scan-NI2SWJ2E.js").then((m) => m.scanCommand),
217
- add: () => import("./add-7UMSGVWC.js").then((m) => m.addCommand),
218
- doctor: () => import("./doctor-TA2FWREU.js").then((m) => m.doctorCommand),
219
- "setup-global": () => import("./setup-global-JUVMJXJ5.js").then((m) => m.setupGlobalCommand),
220
- status: () => import("./status-MVCUNCWX.js").then((m) => m.statusCommand),
221
- update: () => import("./update-Q4EBIRUB.js").then((m) => m.updateCommand),
219
+ add: () => import("./add-KQJE3ZTG.js").then((m) => m.addCommand),
220
+ doctor: () => import("./doctor-AA64XVEY.js").then((m) => m.doctorCommand),
221
+ "setup-global": () => import("./setup-global-CBWLXOQG.js").then((m) => m.setupGlobalCommand),
222
+ status: () => import("./status-BSIXWZMY.js").then((m) => m.statusCommand),
223
+ update: () => import("./update-FJX3DA6X.js").then((m) => m.updateCommand),
222
224
  "cursor-awareness": () => import("./cursor-awareness-KTL2RGKD.js").then((m) => m.cursorAwarenessCommand),
223
225
  "public-inbound-radar": () => import("./public-inbound-radar-WP3XF7GS.js").then((m) => m.publicInboundRadarCommand),
224
226
  "remote-issues": () => import("./remote-issues-SZ4HDQL5.js").then((m) => m.remoteIssuesCommand),
225
227
  dogfood: () => import("./dogfood-KKFVRWT6.js").then((m) => m.dogfoodCommand),
226
- diff: () => import("./diff-YTR7VOAN.js").then((m) => m.diffCommand),
227
- contribute: () => import("./contribute-YKK6YCSI.js").then((m) => m.contributeCommand),
228
- handoff: () => import("./handoff-3UI6VKVG.js").then((m) => m.handoffCommand),
229
- "plan-index": () => import("./plan-index-JMC7Z4DW.js").then((m) => m.planIndexCommand),
230
- run: () => import("./run-I3BFGULT.js").then((m) => m.runCommand),
231
- "run-plan": () => import("./run-plan-FO7CL4M3.js").then((m) => m.runPlanCommand),
232
- "run-plan-all": () => import("./run-I3BFGULT.js").then((m) => m.runPlanAllCommand),
228
+ diff: () => import("./diff-56KMRCER.js").then((m) => m.diffCommand),
229
+ contribute: () => import("./contribute-LFT762Y4.js").then((m) => m.contributeCommand),
230
+ handoff: () => import("./handoff-34SDU4FF.js").then((m) => m.handoffCommand),
231
+ "plan-index": () => import("./plan-index-O3545OA7.js").then((m) => m.planIndexCommand),
232
+ run: () => import("./run-FADX6QCP.js").then((m) => m.runCommand),
233
+ "run-plan": () => import("./run-plan-MO4IFAKV.js").then((m) => m.runPlanCommand),
234
+ "run-plan-all": () => import("./run-FADX6QCP.js").then((m) => m.runPlanAllCommand),
233
235
  dashboard: () => import("./dashboard-YSNUGBFY.js").then((m) => m.dashboardCommand),
234
236
  "dashboard-broadcast": () => import("./dashboard-broadcast-M4CMW7RX.js").then((m) => m.dashboardBroadcastCommand),
235
237
  "mission-control": () => import("./mission-control-LJACEVVN.js").then((m) => m.missionControlCommand),
236
- hook: () => import("./hook-MUV6Y7UW.js").then((m) => m.hookCommand),
238
+ hook: () => import("./hook-KRIXBLNW.js").then((m) => m.hookCommand),
237
239
  guard: () => import("./guard-EHXF76ID.js").then((m) => m.guardCommand),
238
240
  monitors: () => import("./monitors-QV2IS3MP.js").then((m) => m.monitorsCommand),
239
241
  validate: () => import("./validate-V2CW7J4B.js").then((m) => m.validateCommand)
@@ -2,18 +2,19 @@ import {
2
2
  nextStepAfterInstall,
3
3
  performInstall,
4
4
  printInstallEpilogue
5
- } from "./chunk-OZ4QV6LM.js";
5
+ } from "./chunk-KIXK7KOW.js";
6
6
  import {
7
7
  NON_INTERACTIVE_ROOT_ARGS
8
- } from "./chunk-5OXPNVCF.js";
8
+ } from "./chunk-UEKWZ7BN.js";
9
9
  import {
10
10
  SkippedSymlinkError,
11
11
  logApplyStats
12
12
  } from "./chunk-HS7LVVLO.js";
13
- import "./chunk-XWPO3VYQ.js";
14
- import "./chunk-KI6ZHBPV.js";
13
+ import "./chunk-ZDCEAGD4.js";
14
+ import "./chunk-HRILMD5N.js";
15
15
  import "./chunk-ZXKZBTXE.js";
16
- import "./chunk-CGTE7DHN.js";
16
+ import "./chunk-TZYKLR5J.js";
17
+ import "./chunk-WGLPZXNU.js";
17
18
  import "./chunk-MAPOQEA2.js";
18
19
  import {
19
20
  withCliProgress
@@ -30,19 +31,19 @@ import {
30
31
  confirmProjectRoot,
31
32
  isNonInteractive,
32
33
  syncPathCliToRuntime
33
- } from "./chunk-VGZBARQC.js";
34
+ } from "./chunk-YJMZ6UM2.js";
34
35
  import {
35
36
  assessEnvironment
36
37
  } from "./chunk-4IWG5CVE.js";
37
- import "./chunk-XZZAVHH4.js";
38
+ import "./chunk-YMYLO5LG.js";
38
39
  import "./chunk-NQ7IQ5XT.js";
39
- import "./chunk-YGBBHKBE.js";
40
- import "./chunk-6QV2BFGA.js";
41
- import "./chunk-VS2JD2XC.js";
42
- import "./chunk-5VCOWTTP.js";
40
+ import "./chunk-6FXQINND.js";
41
+ import "./chunk-GSCXFJB7.js";
42
+ import "./chunk-WSJ77EHO.js";
43
43
  import {
44
44
  KIT_VERSION
45
45
  } from "./chunk-7HDQEK6T.js";
46
+ import "./chunk-C26I6HTO.js";
46
47
  import "./chunk-77V75A7O.js";
47
48
 
48
49
  // src/commands/init.ts
@@ -3,28 +3,29 @@ import {
3
3
  nextStepAfterInstall,
4
4
  performInstall,
5
5
  printInstallEpilogue
6
- } from "./chunk-OZ4QV6LM.js";
7
- import "./chunk-5OXPNVCF.js";
6
+ } from "./chunk-KIXK7KOW.js";
7
+ import "./chunk-UEKWZ7BN.js";
8
8
  import "./chunk-HS7LVVLO.js";
9
- import "./chunk-XWPO3VYQ.js";
10
- import "./chunk-KI6ZHBPV.js";
9
+ import "./chunk-ZDCEAGD4.js";
10
+ import "./chunk-HRILMD5N.js";
11
11
  import "./chunk-ZXKZBTXE.js";
12
- import "./chunk-CGTE7DHN.js";
12
+ import "./chunk-TZYKLR5J.js";
13
+ import "./chunk-WGLPZXNU.js";
13
14
  import "./chunk-MAPOQEA2.js";
14
15
  import "./chunk-QTON2GQX.js";
15
16
  import "./chunk-PNFF6OU3.js";
16
17
  import "./chunk-ZCTSUQRR.js";
17
18
  import "./chunk-F6C3GFKV.js";
18
19
  import "./chunk-ZB43YMHW.js";
19
- import "./chunk-VGZBARQC.js";
20
+ import "./chunk-YJMZ6UM2.js";
20
21
  import "./chunk-4IWG5CVE.js";
21
- import "./chunk-XZZAVHH4.js";
22
+ import "./chunk-YMYLO5LG.js";
22
23
  import "./chunk-NQ7IQ5XT.js";
23
- import "./chunk-YGBBHKBE.js";
24
- import "./chunk-6QV2BFGA.js";
25
- import "./chunk-VS2JD2XC.js";
26
- import "./chunk-5VCOWTTP.js";
24
+ import "./chunk-6FXQINND.js";
25
+ import "./chunk-GSCXFJB7.js";
26
+ import "./chunk-WSJ77EHO.js";
27
27
  import "./chunk-7HDQEK6T.js";
28
+ import "./chunk-C26I6HTO.js";
28
29
  import "./chunk-77V75A7O.js";
29
30
  export {
30
31
  installCommand,
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  formatPlanIndexLines,
3
3
  writePlanIndex
4
- } from "./chunk-KD2MYBB6.js";
5
- import "./chunk-5VCOWTTP.js";
4
+ } from "./chunk-3J3I2W22.js";
5
+ import "./chunk-C26I6HTO.js";
6
6
  import "./chunk-77V75A7O.js";
7
7
 
8
8
  // src/commands/plan-index.ts
@@ -4,10 +4,10 @@ import {
4
4
  runPlanLoop,
5
5
  shouldUseLiveTui,
6
6
  withLiveTui
7
- } from "./chunk-TFZ2JUXH.js";
7
+ } from "./chunk-TOWH3XCJ.js";
8
8
  import "./chunk-PCCQUWE5.js";
9
9
  import "./chunk-HFUH3HVS.js";
10
- import "./chunk-KD2MYBB6.js";
10
+ import "./chunk-3J3I2W22.js";
11
11
  import {
12
12
  buildDispatchPrompt,
13
13
  classifySlash,
@@ -17,19 +17,20 @@ import {
17
17
  readCommandFile,
18
18
  runHeadlessDispatch,
19
19
  unknownSlashMessage
20
- } from "./chunk-WW3YZKHW.js";
20
+ } from "./chunk-RZ5TNBHU.js";
21
21
  import {
22
22
  HITL_UNANSWERED_EXIT_CODE,
23
23
  formatHitlSummary,
24
24
  getBackend,
25
25
  hitlExitCode
26
- } from "./chunk-OUQZC744.js";
26
+ } from "./chunk-B5CH47OS.js";
27
+ import "./chunk-WGLPZXNU.js";
27
28
  import "./chunk-MAPOQEA2.js";
28
29
  import "./chunk-QTON2GQX.js";
29
30
  import {
30
31
  logger
31
32
  } from "./chunk-ZB43YMHW.js";
32
- import "./chunk-5VCOWTTP.js";
33
+ import "./chunk-C26I6HTO.js";
33
34
  import "./chunk-77V75A7O.js";
34
35
 
35
36
  // src/commands/run.ts
@@ -1,21 +1,23 @@
1
1
  import {
2
+ DRIVER_EVENTS_FORMATS,
2
3
  detectAgentBackend,
3
4
  listDetectBackendIds,
4
5
  runPlanLoop
5
- } from "./chunk-TFZ2JUXH.js";
6
+ } from "./chunk-TOWH3XCJ.js";
6
7
  import "./chunk-PCCQUWE5.js";
7
8
  import "./chunk-HFUH3HVS.js";
8
- import "./chunk-KD2MYBB6.js";
9
+ import "./chunk-3J3I2W22.js";
9
10
  import {
10
11
  HITL_UNANSWERED_EXIT_CODE,
11
12
  getBackend
12
- } from "./chunk-OUQZC744.js";
13
+ } from "./chunk-B5CH47OS.js";
14
+ import "./chunk-WGLPZXNU.js";
13
15
  import "./chunk-MAPOQEA2.js";
14
16
  import "./chunk-QTON2GQX.js";
15
17
  import {
16
18
  logger
17
19
  } from "./chunk-ZB43YMHW.js";
18
- import "./chunk-5VCOWTTP.js";
20
+ import "./chunk-C26I6HTO.js";
19
21
  import "./chunk-77V75A7O.js";
20
22
 
21
23
  // src/commands/run-plan.ts
@@ -62,6 +64,16 @@ var runPlanCommand = defineCommand({
62
64
  description: `CI: never prompt; a HITL gate stops the run with exit ${HITL_UNANSWERED_EXIT_CODE} (no default answer)`,
63
65
  default: false
64
66
  },
67
+ "on-limit": {
68
+ type: "string",
69
+ description: "Backend for the next fresh tick when a tick stops on a vendor usage limit (once per run; default: stop)",
70
+ default: ""
71
+ },
72
+ events: {
73
+ type: "string",
74
+ description: "Driver mode for apps: `ndjson` writes only NDJSON events to stdout and reads HITL answers as JSON lines on stdin (no TTY needed; see docs/driver-events-protocol.md)",
75
+ default: ""
76
+ },
65
77
  plain: {
66
78
  type: "boolean",
67
79
  description: "Status lines instead of the Mission Control live view (the default on a TTY; non-TTY, NO_COLOR and CI are always plain)",
@@ -81,6 +93,12 @@ var runPlanCommand = defineCommand({
81
93
  process.exitCode = 1;
82
94
  return;
83
95
  }
96
+ const events = String(args.events ?? "");
97
+ if (events && !DRIVER_EVENTS_FORMATS.includes(events)) {
98
+ logger.error(`--events must be one of: ${DRIVER_EVENTS_FORMATS.join(", ")}`);
99
+ process.exitCode = 1;
100
+ return;
101
+ }
84
102
  let backend;
85
103
  try {
86
104
  const requested = String(args.backend);
@@ -100,6 +118,17 @@ var runPlanCommand = defineCommand({
100
118
  process.exitCode = 1;
101
119
  return;
102
120
  }
121
+ let onLimit;
122
+ const onLimitId = String(args["on-limit"] ?? "").trim();
123
+ if (onLimitId) {
124
+ try {
125
+ onLimit = getBackend(onLimitId);
126
+ } catch (err) {
127
+ logger.error(`--on-limit: ${String(err)}`);
128
+ process.exitCode = 1;
129
+ return;
130
+ }
131
+ }
103
132
  const code = await runPlanLoop({
104
133
  root: path.resolve(args.cwd),
105
134
  maxTicks,
@@ -108,7 +137,9 @@ var runPlanCommand = defineCommand({
108
137
  dryRun: Boolean(args["dry-run"]),
109
138
  backend,
110
139
  noHitl: Boolean(args["no-hitl"]),
111
- plain: Boolean(args.plain)
140
+ plain: Boolean(args.plain),
141
+ ...events ? { events: {} } : {},
142
+ ...onLimit ? { onLimit } : {}
112
143
  });
113
144
  process.exitCode = code;
114
145
  }
@@ -2,20 +2,20 @@ import {
2
2
  classifyInstallError,
3
3
  isNonInteractive,
4
4
  pathCliStatus
5
- } from "./chunk-VGZBARQC.js";
5
+ } from "./chunk-YJMZ6UM2.js";
6
6
  import {
7
7
  assessEnvironment
8
8
  } from "./chunk-4IWG5CVE.js";
9
- import "./chunk-XZZAVHH4.js";
9
+ import "./chunk-YMYLO5LG.js";
10
10
  import "./chunk-NQ7IQ5XT.js";
11
- import "./chunk-YGBBHKBE.js";
12
- import "./chunk-6QV2BFGA.js";
13
- import "./chunk-VS2JD2XC.js";
14
- import "./chunk-5VCOWTTP.js";
11
+ import "./chunk-6FXQINND.js";
12
+ import "./chunk-GSCXFJB7.js";
13
+ import "./chunk-WSJ77EHO.js";
15
14
  import {
16
15
  KIT_VERSION,
17
16
  pinnedCliSpec
18
17
  } from "./chunk-7HDQEK6T.js";
18
+ import "./chunk-C26I6HTO.js";
19
19
  import "./chunk-77V75A7O.js";
20
20
 
21
21
  // src/commands/setup-global.ts
@@ -1,3 +1,7 @@
1
+ import {
2
+ detectWorkspaceParent,
3
+ workspaceParentAdvisoryLines
4
+ } from "./chunk-P6PMKYWU.js";
1
5
  import {
2
6
  createReadinessReport
3
7
  } from "./chunk-PNFF6OU3.js";
@@ -11,23 +15,23 @@ import {
11
15
  import {
12
16
  npxPinned,
13
17
  pathCliStatus
14
- } from "./chunk-VGZBARQC.js";
18
+ } from "./chunk-YJMZ6UM2.js";
15
19
  import {
16
20
  assessEnvironment
17
21
  } from "./chunk-4IWG5CVE.js";
18
- import "./chunk-XZZAVHH4.js";
22
+ import "./chunk-YMYLO5LG.js";
19
23
  import "./chunk-NQ7IQ5XT.js";
20
- import "./chunk-YGBBHKBE.js";
21
- import "./chunk-6QV2BFGA.js";
24
+ import "./chunk-6FXQINND.js";
25
+ import "./chunk-GSCXFJB7.js";
22
26
  import {
23
27
  MANIFEST_RELATIVE_PATH,
24
28
  loadAgentKitManifest,
25
29
  resolveProtectedGlobs
26
- } from "./chunk-VS2JD2XC.js";
27
- import "./chunk-5VCOWTTP.js";
30
+ } from "./chunk-WSJ77EHO.js";
28
31
  import {
29
32
  KIT_VERSION
30
33
  } from "./chunk-7HDQEK6T.js";
34
+ import "./chunk-C26I6HTO.js";
31
35
  import {
32
36
  readJson
33
37
  } from "./chunk-77V75A7O.js";
@@ -65,6 +69,13 @@ var statusCommand = defineCommand({
65
69
  },
66
70
  async run({ args }) {
67
71
  const rootDir = path.resolve(args.cwd);
72
+ const workspaceParent = await detectWorkspaceParent(rootDir);
73
+ if (workspaceParent && !args.json) {
74
+ for (const line of workspaceParentAdvisoryLines(rootDir, workspaceParent, "status")) {
75
+ console.log(line);
76
+ }
77
+ return;
78
+ }
68
79
  const [manifest, rawProfile, scan, env] = await Promise.all([
69
80
  loadAgentKitManifest(rootDir, args.json ? {} : { onWarning: logger.warn }),
70
81
  readJson(
@@ -84,7 +95,8 @@ var statusCommand = defineCommand({
84
95
  manifest: manifest ?? null,
85
96
  readiness,
86
97
  pendingActions: readiness.pendingActions,
87
- profile
98
+ profile,
99
+ ...workspaceParent ? { workspaceParent } : {}
88
100
  },
89
101
  null,
90
102
  2
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  NON_INTERACTIVE_ROOT_ARGS,
3
3
  syncFromManifest
4
- } from "./chunk-5OXPNVCF.js";
4
+ } from "./chunk-UEKWZ7BN.js";
5
5
  import {
6
6
  formatSkippedSymlinks,
7
7
  logApplyStats
@@ -9,13 +9,14 @@ import {
9
9
  import {
10
10
  REGISTRY_CLI_ARGS,
11
11
  resolveRegistryFromCli
12
- } from "./chunk-XWPO3VYQ.js";
12
+ } from "./chunk-ZDCEAGD4.js";
13
13
  import {
14
14
  CLAUDE_SETTINGS_REL,
15
15
  formatClaudeSettingsDrift,
16
+ generateClaudeCommandAdapters,
16
17
  planClaudeSettingsDrift,
17
18
  writeClaudeSessionStartHook
18
- } from "./chunk-CGTE7DHN.js";
19
+ } from "./chunk-TZYKLR5J.js";
19
20
  import "./chunk-MAPOQEA2.js";
20
21
  import {
21
22
  withCliProgress
@@ -28,17 +29,17 @@ import {
28
29
  confirmProjectRoot,
29
30
  isNonInteractive,
30
31
  syncPathCliToRuntime
31
- } from "./chunk-VGZBARQC.js";
32
+ } from "./chunk-YJMZ6UM2.js";
32
33
  import "./chunk-4IWG5CVE.js";
33
34
  import {
34
35
  checkForUpdates,
35
36
  compareSemver,
36
37
  normalizeSemver,
37
38
  readLocalKitVersion
38
- } from "./chunk-XZZAVHH4.js";
39
+ } from "./chunk-YMYLO5LG.js";
39
40
  import "./chunk-NQ7IQ5XT.js";
40
- import "./chunk-YGBBHKBE.js";
41
- import "./chunk-6QV2BFGA.js";
41
+ import "./chunk-6FXQINND.js";
42
+ import "./chunk-GSCXFJB7.js";
42
43
  import {
43
44
  buildManifest,
44
45
  isProtectedPath,
@@ -46,12 +47,12 @@ import {
46
47
  resolveProtectedGlobs,
47
48
  saveManifest,
48
49
  seedManagedHashLedger
49
- } from "./chunk-VS2JD2XC.js";
50
- import "./chunk-5VCOWTTP.js";
50
+ } from "./chunk-WSJ77EHO.js";
51
51
  import {
52
52
  KIT_PACKAGE_SPEC,
53
53
  KIT_VERSION
54
54
  } from "./chunk-7HDQEK6T.js";
55
+ import "./chunk-C26I6HTO.js";
55
56
  import "./chunk-77V75A7O.js";
56
57
 
57
58
  // src/commands/update.ts
@@ -98,7 +99,7 @@ var updateCommand = defineCommand({
98
99
  },
99
100
  claude: {
100
101
  type: "boolean",
101
- description: "Also apply the ledger-aware Claude settings merge (.claude/settings.json + ledger) with install --claude authority; operator opt-in, never from hooks or plan-loop",
102
+ description: "Also apply the ledger-aware Claude settings merge (.claude/settings.json + ledger) and generate the .claude/commands/* pointer adapters with install --claude authority; operator opt-in, never from hooks or plan-loop",
102
103
  default: false
103
104
  },
104
105
  ...NON_INTERACTIVE_ROOT_ARGS,
@@ -237,6 +238,17 @@ ${err.recovery}
237
238
  } else {
238
239
  console.log(`Claude settings ${claude.status}: ${claude.relativePath}`);
239
240
  }
241
+ const adapters = await generateClaudeCommandAdapters(projectRoot);
242
+ const skipped = adapters.filter((a) => a.status === "skipped-symlink");
243
+ if (skipped.length > 0) {
244
+ logApplyStats(stats);
245
+ logger.error(
246
+ `Claude command adapters not written for: ${skipped.map((a) => a.relativePath).join(", ")} (symlink outside the project). Nothing was changed there.`
247
+ );
248
+ process.exitCode = 1;
249
+ return;
250
+ }
251
+ if (adapters.length > 0) console.log(formatClaudeAdapterSummary(adapters));
240
252
  } else {
241
253
  const drift = await planClaudeSettingsDrift(projectRoot);
242
254
  if (drift) {
@@ -255,6 +267,17 @@ ${err.recovery}
255
267
  }
256
268
  }
257
269
  });
270
+ function formatClaudeAdapterSummary(results) {
271
+ const count = (status) => results.filter((r) => r.status === status).length;
272
+ const parts = [
273
+ `${count("applied")} written`,
274
+ `${count("refreshed")} refreshed`,
275
+ `${count("unchanged")} unchanged`
276
+ ];
277
+ const customized = count("preserved-customized");
278
+ if (customized > 0) parts.push(`${customized} preserved (customized)`);
279
+ return `Claude command adapters: ${parts.join(", ")} (.claude/commands/)`;
280
+ }
258
281
  export {
259
282
  updateCommand
260
283
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dadado/agent-kit-cli",
3
- "version": "5.16.0",
3
+ "version": "5.18.0",
4
4
  "description": "Agent Kit CLI: HITL framework install and tooling for AI-assisted IDEs (rules, skills, plan/handoff, context).",
5
5
  "license": "PolyForm-Noncommercial-1.0.0",
6
6
  "type": "module",
@@ -15,8 +15,8 @@
15
15
  "LICENSE"
16
16
  ],
17
17
  "dependencies": {
18
- "@clack/prompts": "^0.8.2",
19
- "citty": "^0.1.6",
18
+ "@clack/prompts": "^1.8.1",
19
+ "citty": "^0.2.2",
20
20
  "kolorist": "^1.8.0"
21
21
  },
22
22
  "devDependencies": {
@@ -1,6 +0,0 @@
1
- // src/utils/kit-paths.ts
2
- var HANDOFF_REL = ".cursor/HANDOFF.md";
3
-
4
- export {
5
- HANDOFF_REL
6
- };