@lingjingai/scriptctl 0.50.0 → 0.51.1

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 (287) hide show
  1. package/changes/0.51.0.md +24 -0
  2. package/changes/0.51.1.md +15 -0
  3. package/changes/unreleased.md +1 -2
  4. package/dist/cli/register-batch.d.ts +3 -0
  5. package/dist/cli/register-batch.js +28 -0
  6. package/dist/cli/register-batch.js.map +1 -0
  7. package/dist/cli/register-edits.d.ts +4 -0
  8. package/dist/cli/register-edits.js +226 -0
  9. package/dist/cli/register-edits.js.map +1 -0
  10. package/dist/cli/register-query.d.ts +4 -0
  11. package/dist/cli/register-query.js +93 -0
  12. package/dist/cli/register-query.js.map +1 -0
  13. package/dist/cli/register-tools.d.ts +3 -0
  14. package/dist/cli/register-tools.js +23 -0
  15. package/dist/cli/register-tools.js.map +1 -0
  16. package/dist/cli/register-workflows.d.ts +4 -0
  17. package/dist/cli/register-workflows.js +71 -0
  18. package/dist/cli/register-workflows.js.map +1 -0
  19. package/dist/cli/registry.d.ts +14 -0
  20. package/dist/cli/registry.js +65 -0
  21. package/dist/cli/registry.js.map +1 -0
  22. package/dist/cli.d.ts +3 -0
  23. package/dist/cli.js +146 -596
  24. package/dist/cli.js.map +1 -1
  25. package/dist/common.d.ts +12 -38
  26. package/dist/common.js +5 -11
  27. package/dist/common.js.map +1 -1
  28. package/dist/domain/authoring/shared/bracket.js +3 -3
  29. package/dist/domain/authoring/shared/bracket.js.map +1 -1
  30. package/dist/domain/authoring/v3/apply.js +3 -3
  31. package/dist/domain/authoring/v3/apply.js.map +1 -1
  32. package/dist/domain/authoring/v4/apply.js +6 -6
  33. package/dist/domain/authoring/v4/apply.js.map +1 -1
  34. package/dist/domain/authoring/v4/parser.js +2 -2
  35. package/dist/domain/authoring/v4/parser.js.map +1 -1
  36. package/dist/domain/authoring/v4/serializer.js +2 -2
  37. package/dist/domain/authoring/v4/serializer.js.map +1 -1
  38. package/dist/domain/ingest/assembler.d.ts +1 -0
  39. package/dist/domain/ingest/assembler.js +8 -2
  40. package/dist/domain/ingest/assembler.js.map +1 -1
  41. package/dist/domain/ingest/video-apply.js +6 -3
  42. package/dist/domain/ingest/video-apply.js.map +1 -1
  43. package/dist/domain/ingest/video-context.js +2 -2
  44. package/dist/domain/ingest/video-context.js.map +1 -1
  45. package/dist/domain/ingest/video-records.d.ts +6 -5
  46. package/dist/domain/ingest/video-serial-md.d.ts +6 -5
  47. package/dist/domain/ingest/video-serial-md.js +11 -4
  48. package/dist/domain/ingest/video-serial-md.js.map +1 -1
  49. package/dist/domain/script/dispatch.js +5 -7
  50. package/dist/domain/script/dispatch.js.map +1 -1
  51. package/dist/domain/script/shared.js +4 -6
  52. package/dist/domain/script/shared.js.map +1 -1
  53. package/dist/domain/script/v3/address.js +29 -38
  54. package/dist/domain/script/v3/address.js.map +1 -1
  55. package/dist/domain/script/v3/lookups.js +31 -32
  56. package/dist/domain/script/v3/lookups.js.map +1 -1
  57. package/dist/domain/script/v3/ordinal.js +4 -5
  58. package/dist/domain/script/v3/ordinal.js.map +1 -1
  59. package/dist/domain/script/v3/parse.js +3 -4
  60. package/dist/domain/script/v3/parse.js.map +1 -1
  61. package/dist/domain/script/v3/patch/helpers.js +6 -8
  62. package/dist/domain/script/v3/patch/helpers.js.map +1 -1
  63. package/dist/domain/script/v3/selector.js +6 -8
  64. package/dist/domain/script/v3/selector.js.map +1 -1
  65. package/dist/domain/script/v4/address.js +2 -3
  66. package/dist/domain/script/v4/address.js.map +1 -1
  67. package/dist/domain/script/v4/ids.js +6 -7
  68. package/dist/domain/script/v4/ids.js.map +1 -1
  69. package/dist/domain/script/v4/ordinal.js +4 -5
  70. package/dist/domain/script/v4/ordinal.js.map +1 -1
  71. package/dist/domain/script/v4/parse.js +3 -4
  72. package/dist/domain/script/v4/parse.js.map +1 -1
  73. package/dist/domain/script/v4/patch/apply.js +3 -3
  74. package/dist/domain/script/v4/patch/apply.js.map +1 -1
  75. package/dist/domain/script/v4/patch/helpers.js +3 -4
  76. package/dist/domain/script/v4/patch/helpers.js.map +1 -1
  77. package/dist/domain/script/v4/patch/ops-action.js +46 -49
  78. package/dist/domain/script/v4/patch/ops-action.js.map +1 -1
  79. package/dist/domain/script/v4/selector.js +2 -3
  80. package/dist/domain/script/v4/selector.js.map +1 -1
  81. package/dist/infra/ingest/video-discovery.js +7 -4
  82. package/dist/infra/ingest/video-discovery.js.map +1 -1
  83. package/dist/infra/script-output-store.js +6 -11
  84. package/dist/infra/script-output-store.js.map +1 -1
  85. package/dist/infra/script-working-copy.js +15 -16
  86. package/dist/infra/script-working-copy.js.map +1 -1
  87. package/dist/llm/config.js +3 -4
  88. package/dist/llm/config.js.map +1 -1
  89. package/dist/llm/router.js +6 -8
  90. package/dist/llm/router.js.map +1 -1
  91. package/dist/llm/tasks/ingest/text-normalize.js +3 -3
  92. package/dist/llm/tasks/ingest/text-normalize.js.map +1 -1
  93. package/dist/llm/tasks/ingest/video-serial.js +29 -22
  94. package/dist/llm/tasks/ingest/video-serial.js.map +1 -1
  95. package/dist/llm/tasks/schemas.js +5 -5
  96. package/dist/llm/tasks/schemas.js.map +1 -1
  97. package/dist/output.d.ts +2 -3
  98. package/dist/output.js +72 -109
  99. package/dist/output.js.map +1 -1
  100. package/dist/usecases/changelog.d.ts +2 -2
  101. package/dist/usecases/changelog.js +28 -36
  102. package/dist/usecases/changelog.js.map +1 -1
  103. package/dist/usecases/doctor.d.ts +2 -2
  104. package/dist/usecases/doctor.js +3 -5
  105. package/dist/usecases/doctor.js.map +1 -1
  106. package/dist/usecases/ingest/command.d.ts +2 -2
  107. package/dist/usecases/ingest/command.js +22 -5
  108. package/dist/usecases/ingest/command.js.map +1 -1
  109. package/dist/usecases/ingest/pass5-extract.js +5 -4
  110. package/dist/usecases/ingest/pass5-extract.js.map +1 -1
  111. package/dist/usecases/ingest/pass5-govern.js +13 -11
  112. package/dist/usecases/ingest/pass5-govern.js.map +1 -1
  113. package/dist/usecases/ingest/pipeline.js +19 -16
  114. package/dist/usecases/ingest/pipeline.js.map +1 -1
  115. package/dist/usecases/ingest/serial-govern.js +5 -4
  116. package/dist/usecases/ingest/serial-govern.js.map +1 -1
  117. package/dist/usecases/ingest/status.d.ts +2 -2
  118. package/dist/usecases/ingest/status.js +1 -1
  119. package/dist/usecases/ingest/status.js.map +1 -1
  120. package/dist/usecases/ingest/video-pipeline.js +23 -17
  121. package/dist/usecases/ingest/video-pipeline.js.map +1 -1
  122. package/dist/usecases/ingest/view-command.d.ts +2 -2
  123. package/dist/usecases/ingest/view-command.js +7 -6
  124. package/dist/usecases/ingest/view-command.js.map +1 -1
  125. package/dist/usecases/ingest/view-server.d.ts +2 -2
  126. package/dist/usecases/ingest/view-server.js +7 -5
  127. package/dist/usecases/ingest/view-server.js.map +1 -1
  128. package/dist/usecases/script/actions.d.ts +2 -2
  129. package/dist/usecases/script/actions.js +12 -13
  130. package/dist/usecases/script/actions.js.map +1 -1
  131. package/dist/usecases/script/actor.d.ts +2 -2
  132. package/dist/usecases/script/actor.js +3 -4
  133. package/dist/usecases/script/actor.js.map +1 -1
  134. package/dist/usecases/script/actors.d.ts +2 -2
  135. package/dist/usecases/script/actors.js +5 -5
  136. package/dist/usecases/script/actors.js.map +1 -1
  137. package/dist/usecases/script/add-actor.d.ts +2 -2
  138. package/dist/usecases/script/add-episode.d.ts +2 -2
  139. package/dist/usecases/script/add-location.d.ts +2 -2
  140. package/dist/usecases/script/add-prop.d.ts +2 -2
  141. package/dist/usecases/script/alias.d.ts +2 -2
  142. package/dist/usecases/script/alias.js +6 -8
  143. package/dist/usecases/script/alias.js.map +1 -1
  144. package/dist/usecases/script/assets.d.ts +2 -2
  145. package/dist/usecases/script/assets.js +15 -7
  146. package/dist/usecases/script/assets.js.map +1 -1
  147. package/dist/usecases/script/audit-assets.d.ts +2 -2
  148. package/dist/usecases/script/audit-assets.js +12 -15
  149. package/dist/usecases/script/audit-assets.js.map +1 -1
  150. package/dist/usecases/script/command-constraints.js +17 -18
  151. package/dist/usecases/script/command-constraints.js.map +1 -1
  152. package/dist/usecases/script/context.d.ts +2 -2
  153. package/dist/usecases/script/context.js +3 -4
  154. package/dist/usecases/script/context.js.map +1 -1
  155. package/dist/usecases/script/create.d.ts +2 -2
  156. package/dist/usecases/script/create.js +3 -4
  157. package/dist/usecases/script/create.js.map +1 -1
  158. package/dist/usecases/script/delete.d.ts +2 -2
  159. package/dist/usecases/script/delete.js +9 -12
  160. package/dist/usecases/script/delete.js.map +1 -1
  161. package/dist/usecases/script/describe.d.ts +2 -2
  162. package/dist/usecases/script/describe.js +6 -8
  163. package/dist/usecases/script/describe.js.map +1 -1
  164. package/dist/usecases/script/dialogue.d.ts +2 -2
  165. package/dist/usecases/script/dialogue.js +5 -6
  166. package/dist/usecases/script/dialogue.js.map +1 -1
  167. package/dist/usecases/script/do.d.ts +2 -2
  168. package/dist/usecases/script/do.js +63 -66
  169. package/dist/usecases/script/do.js.map +1 -1
  170. package/dist/usecases/script/emotion.d.ts +2 -2
  171. package/dist/usecases/script/emotion.js +3 -3
  172. package/dist/usecases/script/emotion.js.map +1 -1
  173. package/dist/usecases/script/episodes.d.ts +2 -2
  174. package/dist/usecases/script/episodes.js +5 -5
  175. package/dist/usecases/script/episodes.js.map +1 -1
  176. package/dist/usecases/script/export-authoring.d.ts +2 -2
  177. package/dist/usecases/script/export-authoring.js +26 -29
  178. package/dist/usecases/script/export-authoring.js.map +1 -1
  179. package/dist/usecases/script/extend.d.ts +2 -2
  180. package/dist/usecases/script/extend.js +22 -18
  181. package/dist/usecases/script/extend.js.map +1 -1
  182. package/dist/usecases/script/ids.d.ts +2 -2
  183. package/dist/usecases/script/ids.js +21 -17
  184. package/dist/usecases/script/ids.js.map +1 -1
  185. package/dist/usecases/script/importance.d.ts +2 -2
  186. package/dist/usecases/script/importance.js +3 -4
  187. package/dist/usecases/script/importance.js.map +1 -1
  188. package/dist/usecases/script/insert.d.ts +2 -2
  189. package/dist/usecases/script/insert.js +8 -10
  190. package/dist/usecases/script/insert.js.map +1 -1
  191. package/dist/usecases/script/issues.d.ts +2 -2
  192. package/dist/usecases/script/issues.js +10 -2
  193. package/dist/usecases/script/issues.js.map +1 -1
  194. package/dist/usecases/script/lib.d.ts +15 -9
  195. package/dist/usecases/script/lib.js +226 -166
  196. package/dist/usecases/script/lib.js.map +1 -1
  197. package/dist/usecases/script/locations.d.ts +2 -2
  198. package/dist/usecases/script/locations.js +5 -5
  199. package/dist/usecases/script/locations.js.map +1 -1
  200. package/dist/usecases/script/merge.d.ts +2 -2
  201. package/dist/usecases/script/merge.js +9 -12
  202. package/dist/usecases/script/merge.js.map +1 -1
  203. package/dist/usecases/script/move.d.ts +2 -2
  204. package/dist/usecases/script/move.js +6 -8
  205. package/dist/usecases/script/move.js.map +1 -1
  206. package/dist/usecases/script/parenthetical.d.ts +2 -2
  207. package/dist/usecases/script/parenthetical.js +9 -12
  208. package/dist/usecases/script/parenthetical.js.map +1 -1
  209. package/dist/usecases/script/props.d.ts +2 -2
  210. package/dist/usecases/script/props.js +5 -5
  211. package/dist/usecases/script/props.js.map +1 -1
  212. package/dist/usecases/script/refs.d.ts +2 -2
  213. package/dist/usecases/script/refs.js +23 -17
  214. package/dist/usecases/script/refs.js.map +1 -1
  215. package/dist/usecases/script/rename.d.ts +2 -2
  216. package/dist/usecases/script/rename.js +6 -8
  217. package/dist/usecases/script/rename.js.map +1 -1
  218. package/dist/usecases/script/replace.d.ts +2 -2
  219. package/dist/usecases/script/replace.js +6 -8
  220. package/dist/usecases/script/replace.js.map +1 -1
  221. package/dist/usecases/script/role.d.ts +2 -2
  222. package/dist/usecases/script/role.js +3 -4
  223. package/dist/usecases/script/role.js.map +1 -1
  224. package/dist/usecases/script/scenes.d.ts +2 -2
  225. package/dist/usecases/script/scenes.js +7 -5
  226. package/dist/usecases/script/scenes.js.map +1 -1
  227. package/dist/usecases/script/script-patch.d.ts +2 -2
  228. package/dist/usecases/script/script-patch.js +95 -112
  229. package/dist/usecases/script/script-patch.js.map +1 -1
  230. package/dist/usecases/script/script-validate.d.ts +2 -2
  231. package/dist/usecases/script/script-validate.js +11 -7
  232. package/dist/usecases/script/script-validate.js.map +1 -1
  233. package/dist/usecases/script/session.js +52 -63
  234. package/dist/usecases/script/session.js.map +1 -1
  235. package/dist/usecases/script/split.d.ts +2 -2
  236. package/dist/usecases/script/split.js +6 -8
  237. package/dist/usecases/script/split.js.map +1 -1
  238. package/dist/usecases/script/state-add.d.ts +2 -2
  239. package/dist/usecases/script/state-add.js +3 -4
  240. package/dist/usecases/script/state-add.js.map +1 -1
  241. package/dist/usecases/script/state-delete.d.ts +2 -2
  242. package/dist/usecases/script/state-delete.js +3 -4
  243. package/dist/usecases/script/state-delete.js.map +1 -1
  244. package/dist/usecases/script/state-rename.d.ts +2 -2
  245. package/dist/usecases/script/state-rename.js +3 -4
  246. package/dist/usecases/script/state-rename.js.map +1 -1
  247. package/dist/usecases/script/states.d.ts +2 -2
  248. package/dist/usecases/script/states.js +54 -27
  249. package/dist/usecases/script/states.js.map +1 -1
  250. package/dist/usecases/script/summary.d.ts +2 -2
  251. package/dist/usecases/script/summary.js +21 -2
  252. package/dist/usecases/script/summary.js.map +1 -1
  253. package/dist/usecases/script/synopsis-generate.d.ts +2 -2
  254. package/dist/usecases/script/synopsis-generate.js +38 -39
  255. package/dist/usecases/script/synopsis-generate.js.map +1 -1
  256. package/dist/usecases/script/synopsis.d.ts +2 -2
  257. package/dist/usecases/script/synopsis.js +9 -12
  258. package/dist/usecases/script/synopsis.js.map +1 -1
  259. package/dist/usecases/script/transition.d.ts +2 -2
  260. package/dist/usecases/script/transition.js +3 -4
  261. package/dist/usecases/script/transition.js.map +1 -1
  262. package/dist/usecases/script/type.d.ts +2 -2
  263. package/dist/usecases/script/type.js +3 -4
  264. package/dist/usecases/script/type.js.map +1 -1
  265. package/dist/usecases/script/v4/queries.d.ts +3 -2
  266. package/dist/usecases/script/v4/queries.js +43 -6
  267. package/dist/usecases/script/v4/queries.js.map +1 -1
  268. package/dist/usecases/script/working-copy.d.ts +4 -4
  269. package/dist/usecases/script/working-copy.js +96 -92
  270. package/dist/usecases/script/working-copy.js.map +1 -1
  271. package/dist/usecases/script/worldview.d.ts +2 -2
  272. package/dist/usecases/script/worldview.js +3 -4
  273. package/dist/usecases/script/worldview.js.map +1 -1
  274. package/dist/usecases/script/write-authoring.d.ts +2 -2
  275. package/dist/usecases/script/write-authoring.js +62 -81
  276. package/dist/usecases/script/write-authoring.js.map +1 -1
  277. package/dist/usecases/update.d.ts +2 -2
  278. package/dist/usecases/update.js +32 -47
  279. package/dist/usecases/update.js.map +1 -1
  280. package/package.json +1 -1
  281. package/skills/scriptctl/SKILL.md +46 -37
  282. package/skills/scriptctl/references/atomic-edit-workflow.md +6 -6
  283. package/skills/scriptctl/references/ingest-workflow.md +20 -20
  284. package/skills/scriptctl/references/state-reference-repair.md +6 -6
  285. package/dist/help-text.d.ts +0 -2
  286. package/dist/help-text.js +0 -1144
  287. package/dist/help-text.js.map +0 -1
@@ -7,29 +7,28 @@ export function assertSceneRefCommandFlags(version, flags) {
7
7
  flags.occurrence !== undefined ? "--occurrence" : "",
8
8
  ].filter(Boolean);
9
9
  if (unsupported.length > 0) {
10
- throw new CliError("SCENE REF BLOCKED: Script v4 flags invalid", "Script v4 replaces an asset's complete state set.", {
10
+ throw new CliError("Script v4 replaces an asset's complete state set.", {
11
11
  exitCode: EXIT_USAGE,
12
12
  errorCode: "SCENE_REF_V4_FLAGS_INVALID",
13
- received: unsupported,
14
- nextSteps: ["Use one or more `--state <state-id>` values, or use `--remove` for the whole asset reference."],
13
+ hint: "Use one or more `--state <state-id>` values, or use `--remove` for the whole asset reference.",
14
+ data: { actual: unsupported },
15
15
  });
16
16
  }
17
17
  if ((flags.remove && flags.states.length > 0) || (!flags.remove && flags.states.length === 0)) {
18
- throw new CliError("SCENE REF BLOCKED: Script v4 mode invalid", "Choose a complete state set or remove the asset reference.", {
18
+ throw new CliError("Choose a complete state set or remove the asset reference.", {
19
19
  exitCode: EXIT_USAGE,
20
20
  errorCode: "SCENE_REF_V4_MODE_INVALID",
21
- required: ["one or more --state values, or --remove"],
22
- received: flags.remove ? ["--remove", "--state"] : ["<missing>"],
21
+ data: { expected: ["one or more --state values, or --remove"], actual: flags.remove ? ["--remove", "--state"] : ["<missing>"] },
23
22
  });
24
23
  }
25
24
  return;
26
25
  }
27
26
  if (flags.states.length > 1) {
28
- throw new CliError("SCENE REF BLOCKED: Script v3 accepts one state", "Script v3 scene references have one state_id.", {
27
+ throw new CliError("Script v3 scene references have one state_id.", {
29
28
  exitCode: EXIT_USAGE,
30
29
  errorCode: "SCENE_REF_V3_MULTIPLE_STATES",
31
- received: flags.states,
32
- nextSteps: ["Pass one `--state <state-id>` value for this v3 script."],
30
+ hint: "Pass one `--state <state-id>` value for this v3 script.",
31
+ data: { actual: flags.states },
33
32
  });
34
33
  }
35
34
  }
@@ -39,18 +38,18 @@ export function assertMoveCommandFlags(version, flags) {
39
38
  ...(flags.before !== undefined ? ["--before"] : []),
40
39
  ...(flags.after !== undefined ? ["--after"] : []),
41
40
  ];
42
- throw new CliError("MOVE BLOCKED: Script v3 uses numeric placement", "Sibling ID placement is only supported by Script v4.", {
41
+ throw new CliError("Sibling ID placement is only supported by Script v4.", {
43
42
  exitCode: EXIT_USAGE,
44
43
  errorCode: "MOVE_V4_PLACEMENT_UNSUPPORTED",
45
- received,
46
- nextSteps: ["Use the V3 destination address and --at position syntax."],
44
+ hint: "Use the V3 destination address and --at position syntax.",
45
+ data: { actual: received },
47
46
  });
48
47
  }
49
48
  if (version === 4 && flags.at !== undefined) {
50
- throw new CliError("MOVE BLOCKED: Script v4 uses ID placement", "Numeric move positions are not supported by Script v4.", {
49
+ throw new CliError("Numeric move positions are not supported by Script v4.", {
51
50
  exitCode: EXIT_USAGE,
52
51
  errorCode: "V4_NUMERIC_POSITION_UNSUPPORTED",
53
- nextSteps: ["Use --before <sibling-id>, --after <sibling-id>, or omit both to append."],
52
+ hint: "Use --before <sibling-id>, --after <sibling-id>, or omit both to append.",
54
53
  });
55
54
  }
56
55
  }
@@ -92,10 +91,10 @@ function insertFlagIsPresent(flags, name) {
92
91
  }
93
92
  export function assertInsertCommandFlags(version, insertedKind, flags) {
94
93
  if (version === 4 && flags.at !== undefined) {
95
- throw new CliError("INSERT BLOCKED: Script v4 uses ID placement", "Numeric insertion positions are not supported by Script v4.", {
94
+ throw new CliError("Numeric insertion positions are not supported by Script v4.", {
96
95
  exitCode: EXIT_USAGE,
97
96
  errorCode: "V4_NUMERIC_POSITION_UNSUPPORTED",
98
- nextSteps: ["Use --before <sibling-id>, --after <sibling-id>, or omit both to append."],
97
+ hint: "Use --before <sibling-id>, --after <sibling-id>, or omit both to append.",
99
98
  });
100
99
  }
101
100
  const allowed = version === 3
@@ -106,10 +105,10 @@ export function assertInsertCommandFlags(version, insertedKind, flags) {
106
105
  .map((name) => `--${name}`);
107
106
  if (invalid.length === 0)
108
107
  return;
109
- throw new CliError("INSERT BLOCKED: flags not applicable", "Action and scene insertion flags cannot be mixed or used with the wrong Script version.", {
108
+ throw new CliError("Action and scene insertion flags cannot be mixed or used with the wrong Script version.", {
110
109
  exitCode: EXIT_USAGE,
111
110
  errorCode: "INSERT_FLAG_INVALID",
112
- received: invalid,
111
+ data: { actual: invalid },
113
112
  });
114
113
  }
115
114
  //# sourceMappingURL=command-constraints.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"command-constraints.js","sourceRoot":"","sources":["../../../src/usecases/script/command-constraints.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAWvD,MAAM,UAAU,0BAA0B,CACxC,OAAsB,EACtB,KAA2B;IAE3B,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;QAClB,MAAM,WAAW,GAAG;YAClB,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;YAC5B,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;YAC9B,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE;SACrD,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAClB,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,QAAQ,CAAC,4CAA4C,EAAE,mDAAmD,EAAE;gBACpH,QAAQ,EAAE,UAAU;gBACpB,SAAS,EAAE,4BAA4B;gBACvC,QAAQ,EAAE,WAAW;gBACrB,SAAS,EAAE,CAAC,+FAA+F,CAAC;aAC7G,CAAC,CAAC;QACL,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;YAC9F,MAAM,IAAI,QAAQ,CAAC,2CAA2C,EAAE,4DAA4D,EAAE;gBAC5H,QAAQ,EAAE,UAAU;gBACpB,SAAS,EAAE,2BAA2B;gBACtC,QAAQ,EAAE,CAAC,yCAAyC,CAAC;gBACrD,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;aACjE,CAAC,CAAC;QACL,CAAC;QACD,OAAO;IACT,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,QAAQ,CAAC,gDAAgD,EAAE,+CAA+C,EAAE;YACpH,QAAQ,EAAE,UAAU;YACpB,SAAS,EAAE,8BAA8B;YACzC,QAAQ,EAAE,KAAK,CAAC,MAAM;YACtB,SAAS,EAAE,CAAC,yDAAyD,CAAC;SACvE,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAQD,MAAM,UAAU,sBAAsB,CACpC,OAAsB,EACtB,KAAuB;IAEvB,IAAI,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,EAAE,CAAC;QAC/E,MAAM,QAAQ,GAAG;YACf,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACnD,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;SAClD,CAAC;QACF,MAAM,IAAI,QAAQ,CAAC,gDAAgD,EAAE,sDAAsD,EAAE;YAC3H,QAAQ,EAAE,UAAU;YACpB,SAAS,EAAE,+BAA+B;YAC1C,QAAQ;YACR,SAAS,EAAE,CAAC,0DAA0D,CAAC;SACxE,CAAC,CAAC;IACL,CAAC;IACD,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC;QAC5C,MAAM,IAAI,QAAQ,CAAC,2CAA2C,EAAE,wDAAwD,EAAE;YACxH,QAAQ,EAAE,UAAU;YACpB,SAAS,EAAE,iCAAiC;YAC5C,SAAS,EAAE,CAAC,0EAA0E,CAAC;SACxF,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AA2CD,MAAM,gBAAgB,GAA+D;IACnF,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,aAAa,EAAE,eAAe;IAC9B,WAAW,EAAE,UAAU;IACvB,EAAE,EAAE,IAAI;IACR,MAAM,EAAE,QAAQ;IAChB,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,OAAO;IACd,OAAO,EAAE,SAAS;IAClB,eAAe,EAAE,cAAc;IAC/B,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,OAAO;IACd,QAAQ,EAAE,UAAU;IACpB,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,OAAO;IACd,UAAU,EAAE,SAAS;IACrB,KAAK,EAAE,QAAQ;CAChB,CAAC;AAEF,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAiB;IACrD,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO;CAC3F,CAAC,CAAC;AACH,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAiB;IACpD,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU;CACjE,CAAC,CAAC;AACH,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAiB;IACrD,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,OAAO;CAC9G,CAAC,CAAC;AACH,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAiB;IACpD,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO;CACpE,CAAC,CAAC;AAEH,SAAS,mBAAmB,CAAC,KAAyB,EAAE,IAAoB;IAC1E,MAAM,KAAK,GAAG,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5C,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC;AACvE,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,OAAsB,EACtB,YAAgC,EAChC,KAAyB;IAEzB,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC;QAC5C,MAAM,IAAI,QAAQ,CAAC,6CAA6C,EAAE,6DAA6D,EAAE;YAC/H,QAAQ,EAAE,UAAU;YACpB,SAAS,EAAE,iCAAiC;YAC5C,SAAS,EAAE,CAAC,0EAA0E,CAAC;SACxF,CAAC,CAAC;IACL,CAAC;IAED,MAAM,OAAO,GAAG,OAAO,KAAK,CAAC;QAC3B,CAAC,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,qBAAqB;QAC5E,CAAC,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,qBAAqB,CAAC;IAC/E,MAAM,OAAO,GAAI,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAsB;SAChE,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;SACxE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAEjC,MAAM,IAAI,QAAQ,CAAC,sCAAsC,EAAE,yFAAyF,EAAE;QACpJ,QAAQ,EAAE,UAAU;QACpB,SAAS,EAAE,qBAAqB;QAChC,QAAQ,EAAE,OAAO;KAClB,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"command-constraints.js","sourceRoot":"","sources":["../../../src/usecases/script/command-constraints.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- import { type Report } from "../../common.js";
1
+ import { type CommandOutput } from "../../common.js";
2
2
  import { type Dict } from "../../domain/script/shared.js";
3
- export declare function commandContext(opts: Dict): Promise<[Report, number]>;
3
+ export declare function commandContext(opts: Dict): Promise<[CommandOutput, number]>;
@@ -14,12 +14,11 @@ function stateValues(raw) {
14
14
  export async function commandContext(opts) {
15
15
  const args = asList(opts["_args"]);
16
16
  if (args.length < 2) {
17
- throw new CliError("VERB BLOCKED: context args missing", "context args missing.", {
17
+ throw new CliError("context args missing.", {
18
18
  exitCode: EXIT_USAGE,
19
- required: ["<scene-addr> <asset-addr>"],
20
- received: args,
21
- nextSteps: ["Example: scriptctl context ep_001/scn_001 actor:act_001 --state st_calm"],
22
19
  errorCode: "ARGS_MISSING",
20
+ hint: "Example: scriptctl context ep_001/scn_001 actor:act_001 --state st_calm",
21
+ data: { expected: ["<scene-addr> <asset-addr>"], actual: args },
23
22
  });
24
23
  }
25
24
  const session = await loadScriptForEdit(opts);
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/usecases/script/context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/usecases/script/context.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- import { type Report } from "../../common.js";
1
+ import { type CommandOutput } from "../../common.js";
2
2
  import { type Dict } from "../../domain/script/shared.js";
3
- export declare function commandCreate(opts: Dict): Promise<[Report, number]>;
3
+ export declare function commandCreate(opts: Dict): Promise<[CommandOutput, number]>;
@@ -11,12 +11,11 @@ export async function commandCreate(opts) {
11
11
  const script = blankScriptV4(title);
12
12
  const localPath = scriptJsonPath(opts);
13
13
  if (exists(localPath) && !force) {
14
- throw new CliError("CREATE BLOCKED: target already exists", "A script already exists at the target.", {
14
+ throw new CliError("A script already exists at the target.", {
15
15
  exitCode: EXIT_INPUT,
16
- required: ["a non-existent target, or --force to overwrite"],
17
- received: [localPath],
18
- nextSteps: ["Edit the existing script with the atomic verbs, or pass --force to overwrite with a blank scaffold."],
19
16
  errorCode: "SCRIPT_EXISTS",
17
+ hint: "Edit the existing script with the atomic verbs, or pass --force to overwrite with a blank scaffold.",
18
+ data: { expected: ["a non-existent target, or --force to overwrite"], actual: [localPath] },
20
19
  });
21
20
  }
22
21
  atomicWriteJson(localPath, script);
@@ -1 +1 @@
1
- {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/usecases/script/create.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,QAAQ,EACR,UAAU,EACV,gBAAgB,EAChB,OAAO,EAIP,MAAM,EAGN,cAAc,GAGf,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAErE,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AA2BlE,OAAO,EAKL,KAAK,GACN,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,iBAAiB,EACE,eAAe,GAEnC,MAAM,cAAc,CAAC;AACtB,OAAO,EACib,iBAAiB,GACxc,MAAM,UAAU,CAAC;AAElB,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAU;IAC5C,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,WAAW,CAAC,CAAC;IAC/D,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IACrC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC1C,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IAEpC,MAAM,SAAS,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IACvC,IAAI,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAChC,MAAM,IAAI,QAAQ,CAAC,uCAAuC,EAAE,wCAAwC,EAAE;YACpG,QAAQ,EAAE,UAAU;YACpB,QAAQ,EAAE,CAAC,gDAAgD,CAAC;YAC5D,QAAQ,EAAE,CAAC,SAAS,CAAC;YACrB,SAAS,EAAE,CAAC,qGAAqG,CAAC;YAClH,SAAS,EAAE,eAAe;SAC3B,CAAC,CAAC;IACL,CAAC;IACD,eAAe,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACnC,MAAM,OAAO,GAAG,IAAI,iBAAiB,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;IACpF,MAAM,UAAU,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC7C,OAAO,CAAC,iBAAiB,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;AAC7F,CAAC"}
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/usecases/script/create.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,QAAQ,EACR,UAAU,EACV,gBAAgB,EAChB,OAAO,EAIP,MAAM,EAGN,cAAc,GAGf,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAErE,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AA2BlE,OAAO,EAKL,KAAK,GACN,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,iBAAiB,EACE,eAAe,GAEnC,MAAM,cAAc,CAAC;AACtB,OAAO,EACib,iBAAiB,GACxc,MAAM,UAAU,CAAC;AAElB,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAU;IAC5C,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,WAAW,CAAC,CAAC;IAC/D,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IACrC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC1C,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IAEpC,MAAM,SAAS,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IACvC,IAAI,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAChC,MAAM,IAAI,QAAQ,CAAC,wCAAwC,EAAE;YACrD,QAAQ,EAAE,UAAU;YACpB,SAAS,EAAE,eAAe;YAC1B,IAAI,EAAE,qGAAqG;YAC3G,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,gDAAgD,CAAC,EAAE,MAAM,EAAE,CAAC,SAAS,CAAC,EAAE;SAC5F,CAAC,CAAC;IACX,CAAC;IACD,eAAe,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACnC,MAAM,OAAO,GAAG,IAAI,iBAAiB,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;IACpF,MAAM,UAAU,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC7C,OAAO,CAAC,iBAAiB,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;AAC7F,CAAC"}
@@ -1,3 +1,3 @@
1
- import { type Report } from "../../common.js";
1
+ import { type CommandOutput } from "../../common.js";
2
2
  import { type Dict } from "../../domain/script/shared.js";
3
- export declare function commandDelete(opts: Dict): Promise<[Report, number]>;
3
+ export declare function commandDelete(opts: Dict): Promise<[CommandOutput, number]>;
@@ -7,12 +7,11 @@ import { applySingleScriptOpToSession, } from "./lib.js";
7
7
  export async function commandDelete(opts) {
8
8
  const args = asList(opts["_args"]);
9
9
  if (args.length < 1) {
10
- throw new CliError("VERB BLOCKED: Address missing", "Address missing.", {
10
+ throw new CliError("Address missing.", {
11
11
  exitCode: EXIT_USAGE,
12
- required: ["address"],
13
- received: ["<empty>"],
14
- nextSteps: ["Pass an address (action / scene / asset / speaker)."],
15
12
  errorCode: "ADDRESS_MISSING",
13
+ hint: "Pass an address (action / scene / asset / speaker).",
14
+ data: { expected: ["address"], actual: ["<empty>"] },
16
15
  });
17
16
  }
18
17
  const session = await loadScriptForEdit(opts);
@@ -33,12 +32,11 @@ export async function commandDelete(opts) {
33
32
  bad.push(`--${f}`);
34
33
  }
35
34
  if (bad.length > 0) {
36
- throw new CliError("VERB BLOCKED: flag not applicable", `${bad.join(", ")} cannot be used with ${kind} delete.`, {
35
+ throw new CliError(`${bad.join(", ")} cannot be used with ${kind} delete.`, {
37
36
  exitCode: EXIT_USAGE,
38
- required: [`for ${kind} delete: ${allowed.length === 0 ? "no extra flags" : allowed.map((f) => `--${f}`).join(" / ")}`],
39
- received: bad,
40
- nextSteps: ["Drop the unsupported flag(s) and retry."],
41
37
  errorCode: "DELETE_FLAG_INVALID",
38
+ hint: "Drop the unsupported flag(s) and retry.",
39
+ data: { expected: [`for ${kind} delete: ${allowed.length === 0 ? "no extra flags" : allowed.map((f) => `--${f}`).join(" / ")}`], actual: bad },
42
40
  });
43
41
  }
44
42
  }
@@ -78,12 +76,11 @@ export async function commandDelete(opts) {
78
76
  replacement: opts["replacement"],
79
77
  };
80
78
  }
81
- throw new CliError("VERB BLOCKED: delete cannot operate on this address", "delete cannot operate on this address.", {
79
+ throw new CliError("delete cannot operate on this address.", {
82
80
  exitCode: EXIT_USAGE,
83
- required: ["action / scene / asset / speaker address"],
84
- received: [args[0]],
85
- nextSteps: ["Use a supported address."],
86
81
  errorCode: "ADDRESS_UNSUPPORTED",
82
+ hint: "Use a supported address.",
83
+ data: { expected: ["action / scene / asset / speaker address"], actual: [args[0]] },
87
84
  });
88
85
  })();
89
86
  return applySingleScriptOpToSession(session, opts, op);
@@ -1 +1 @@
1
- {"version":3,"file":"delete.js","sourceRoot":"","sources":["../../../src/usecases/script/delete.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"delete.js","sourceRoot":"","sources":["../../../src/usecases/script/delete.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- import { type Report } from "../../common.js";
1
+ import { type CommandOutput } from "../../common.js";
2
2
  import { type Dict } from "../../domain/script/shared.js";
3
- export declare function commandDescribe(opts: Dict): Promise<[Report, number]>;
3
+ export declare function commandDescribe(opts: Dict): Promise<[CommandOutput, number]>;
@@ -7,12 +7,11 @@ import { applySingleScriptOpToSession, } from "./lib.js";
7
7
  export async function commandDescribe(opts) {
8
8
  const args = asList(opts["_args"]);
9
9
  if (args.length < 2) {
10
- throw new CliError("VERB BLOCKED: Describe args missing", "Describe args missing.", {
10
+ throw new CliError("Describe args missing.", {
11
11
  exitCode: EXIT_USAGE,
12
- required: ["<addr> <text>"],
13
- received: args,
14
- nextSteps: ["Example: scriptctl describe actor:act_001 \"男主\" or scriptctl describe actor:act_001/st_calm \"...\""],
15
12
  errorCode: "ARGS_MISSING",
13
+ hint: "Example: scriptctl describe actor:act_001 \"男主\" or scriptctl describe actor:act_001/st_calm \"...\"",
14
+ data: { expected: ["<addr> <text>"], actual: args },
16
15
  });
17
16
  }
18
17
  const session = await loadScriptForEdit(opts);
@@ -23,12 +22,11 @@ export async function commandDescribe(opts) {
23
22
  if (addr.kind === "asset") {
24
23
  return applySingleScriptOpToSession(session, opts, { op: "asset.describe", target: args[0], description: args[1] });
25
24
  }
26
- throw new CliError("VERB BLOCKED: describe address invalid", "describe address invalid.", {
25
+ throw new CliError("describe address invalid.", {
27
26
  exitCode: EXIT_USAGE,
28
- required: ["asset address (e.g. actor:act_001) or state address (e.g. actor:act_001/st_calm)"],
29
- received: [args[0]],
30
- nextSteps: ["Use a supported address."],
31
27
  errorCode: "ADDRESS_UNSUPPORTED",
28
+ hint: "Use a supported address.",
29
+ data: { expected: ["asset address (e.g. actor:act_001) or state address (e.g. actor:act_001/st_calm)"], actual: [args[0]] },
32
30
  });
33
31
  }
34
32
  //# sourceMappingURL=describe.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"describe.js","sourceRoot":"","sources":["../../../src/usecases/script/describe.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,QAAQ,EAKR,UAAU,GASX,MAAM,iBAAiB,CAAC;AAYzB,OAAO,EACL,eAAe,GAKhB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAWnE,OAAO,EACL,MAAM,GAKP,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAEL,iBAAiB,GAElB,MAAM,cAAc,CAAC;AACtB,OAAO,EACoK,4BAA4B,GACtM,MAAM,UAAU,CAAC;AAElB,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAU;IAC9C,MAAM,IAAI,GAAG,MAAM,CAAS,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3C,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,QAAQ,CAAC,qCAAqC,EAAE,wBAAwB,EAAE;YAClF,QAAQ,EAAE,UAAU;YACpB,QAAQ,EAAE,CAAC,eAAe,CAAC;YAC3B,QAAQ,EAAE,IAAI;YACd,SAAS,EAAE,CAAC,sGAAsG,CAAC;YACnH,SAAS,EAAE,cAAc;SAC1B,CAAC,CAAC;IACL,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC9C,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACxF,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC1B,OAAO,4BAA4B,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,gBAAgB,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACtH,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC1B,OAAO,4BAA4B,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,gBAAgB,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACtH,CAAC;IACD,MAAM,IAAI,QAAQ,CAAC,wCAAwC,EAAE,2BAA2B,EAAE;QACxF,QAAQ,EAAE,UAAU;QACpB,QAAQ,EAAE,CAAC,kFAAkF,CAAC;QAC9F,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC;QACpB,SAAS,EAAE,CAAC,0BAA0B,CAAC;QACvC,SAAS,EAAE,qBAAqB;KACjC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"describe.js","sourceRoot":"","sources":["../../../src/usecases/script/describe.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,QAAQ,EAKR,UAAU,GASX,MAAM,iBAAiB,CAAC;AAYzB,OAAO,EACL,eAAe,GAKhB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAWnE,OAAO,EACL,MAAM,GAKP,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAEL,iBAAiB,GAElB,MAAM,cAAc,CAAC;AACtB,OAAO,EACoK,4BAA4B,GACtM,MAAM,UAAU,CAAC;AAElB,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAU;IAC9C,MAAM,IAAI,GAAG,MAAM,CAAS,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3C,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,QAAQ,CAAC,wBAAwB,EAAE;YACrC,QAAQ,EAAE,UAAU;YACpB,SAAS,EAAE,cAAc;YACzB,IAAI,EAAE,sGAAsG;YAC5G,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE;SACpD,CAAC,CAAC;IACX,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC9C,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACxF,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC1B,OAAO,4BAA4B,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,gBAAgB,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACtH,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC1B,OAAO,4BAA4B,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,gBAAgB,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACtH,CAAC;IACD,MAAM,IAAI,QAAQ,CAAC,2BAA2B,EAAE;QACxC,QAAQ,EAAE,UAAU;QACpB,SAAS,EAAE,qBAAqB;QAChC,IAAI,EAAE,0BAA0B;QAChC,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,kFAAkF,CAAC,EAAE,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,EAAE;KAC7H,CAAC,CAAC;AACX,CAAC"}
@@ -1,3 +1,3 @@
1
- import { type Report } from "../../common.js";
1
+ import { type CommandOutput } from "../../common.js";
2
2
  import { type Dict } from "../../domain/script/shared.js";
3
- export declare function commandDialogue(opts: Dict): Promise<[Report, number]>;
3
+ export declare function commandDialogue(opts: Dict): Promise<[CommandOutput, number]>;
@@ -6,20 +6,19 @@ import { dialogueTemplate } from "./lib.js";
6
6
  export async function commandDialogue(opts) {
7
7
  const args = asList(opts["_args"]);
8
8
  if (args.length < 1) {
9
- throw new CliError("VERB BLOCKED: dialogue action ref missing", "dialogue action ref missing.", {
9
+ throw new CliError("dialogue action ref missing.", {
10
10
  exitCode: EXIT_USAGE,
11
- required: ["<action-addr>"],
12
- received: ["<empty>"],
13
- nextSteps: ["Example: scriptctl dialogue ep_001/scn_001#3 --actor act_001"],
14
11
  errorCode: "ARGS_MISSING",
12
+ hint: "Example: scriptctl dialogue ep_001/scn_001#3 --actor act_001",
13
+ data: { expected: ["<action-addr>"], actual: ["<empty>"] },
15
14
  });
16
15
  }
17
16
  const session = await loadScriptForEdit(opts);
18
17
  if (session.version === 3 && opts["state"] !== undefined) {
19
- throw new CliError("VERB BLOCKED: dialogue state requires Script v4", "Script v3 dialogue speakers do not use this flag.", {
18
+ throw new CliError("Script v3 dialogue speakers do not use this flag.", {
20
19
  exitCode: EXIT_USAGE,
21
20
  errorCode: "DIALOGUE_STATE_VERSION_UNSUPPORTED",
22
- received: ["--state"],
21
+ data: { actual: ["--state"] },
23
22
  });
24
23
  }
25
24
  return applySingleScriptOpToSession(session, opts, {
@@ -1 +1 @@
1
- {"version":3,"file":"dialogue.js","sourceRoot":"","sources":["../../../src/usecases/script/dialogue.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,QAAQ,EAKR,UAAU,GASX,MAAM,iBAAiB,CAAC;AA6BzB,OAAO,EACL,MAAM,GAKP,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAEL,iBAAiB,GAElB,MAAM,cAAc,CAAC;AACtB,OAAO,EACoK,4BAA4B,GACtM,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE5C,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAU;IAC9C,MAAM,IAAI,GAAG,MAAM,CAAS,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3C,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,QAAQ,CAAC,2CAA2C,EAAE,8BAA8B,EAAE;YAC9F,QAAQ,EAAE,UAAU;YACpB,QAAQ,EAAE,CAAC,eAAe,CAAC;YAC3B,QAAQ,EAAE,CAAC,SAAS,CAAC;YACrB,SAAS,EAAE,CAAC,8DAA8D,CAAC;YAC3E,SAAS,EAAE,cAAc;SAC1B,CAAC,CAAC;IACL,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC9C,IAAI,OAAO,CAAC,OAAO,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,SAAS,EAAE,CAAC;QACzD,MAAM,IAAI,QAAQ,CAAC,iDAAiD,EAAE,mDAAmD,EAAE;YACzH,QAAQ,EAAE,UAAU;YACpB,SAAS,EAAE,oCAAoC;YAC/C,QAAQ,EAAE,CAAC,SAAS,CAAC;SACtB,CAAC,CAAC;IACL,CAAC;IACD,OAAO,4BAA4B,CAAC,OAAO,EAAE,IAAI,EAAE;QACjD,GAAG,gBAAgB,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACvF,GAAG,CAAC,OAAO,CAAC,OAAO,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5F,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;KACZ,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"dialogue.js","sourceRoot":"","sources":["../../../src/usecases/script/dialogue.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,QAAQ,EAKR,UAAU,GASX,MAAM,iBAAiB,CAAC;AA6BzB,OAAO,EACL,MAAM,GAKP,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAEL,iBAAiB,GAElB,MAAM,cAAc,CAAC;AACtB,OAAO,EACoK,4BAA4B,GACtM,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE5C,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAU;IAC9C,MAAM,IAAI,GAAG,MAAM,CAAS,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3C,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,QAAQ,CAAC,8BAA8B,EAAE;YAC3C,QAAQ,EAAE,UAAU;YACpB,SAAS,EAAE,cAAc;YACzB,IAAI,EAAE,8DAA8D;YACpE,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC,SAAS,CAAC,EAAE;SAC3D,CAAC,CAAC;IACX,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC9C,IAAI,OAAO,CAAC,OAAO,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,SAAS,EAAE,CAAC;QACzD,MAAM,IAAI,QAAQ,CAAC,mDAAmD,EAAE;YAChE,QAAQ,EAAE,UAAU;YACpB,SAAS,EAAE,oCAAoC;YAC/C,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,SAAS,CAAC,EAAE;SAC9B,CAAC,CAAC;IACX,CAAC;IACD,OAAO,4BAA4B,CAAC,OAAO,EAAE,IAAI,EAAE;QACjD,GAAG,gBAAgB,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACvF,GAAG,CAAC,OAAO,CAAC,OAAO,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5F,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;KACZ,CAAC,CAAC;AACL,CAAC"}
@@ -1,3 +1,3 @@
1
- import { type Report } from "../../common.js";
1
+ import { type CommandOutput } from "../../common.js";
2
2
  import { type Dict } from "../../domain/script/shared.js";
3
- export declare function commandDo(opts: Dict): Promise<[Report, number]>;
3
+ export declare function commandDo(opts: Dict): Promise<[CommandOutput, number]>;
@@ -11,35 +11,32 @@ export async function commandDo(opts) {
11
11
  // No pipe on an interactive terminal: reading fd 0 would block forever
12
12
  // waiting for keyboard input. Fail fast instead.
13
13
  if (process.stdin.isTTY) {
14
- throw new CliError("DO BLOCKED: no input", "no verb script piped to stdin.", {
14
+ throw new CliError("no verb script piped to stdin.", {
15
15
  exitCode: EXIT_USAGE,
16
- required: ["a file path or piped stdin"],
17
- received: ["<tty, no pipe>"],
18
- nextSteps: ["Pass a file (scriptctl do edits.txt) or pipe one (… | scriptctl do -)."],
19
16
  errorCode: "DO_NO_INPUT",
17
+ hint: "Pass a file (scriptctl do edits.txt) or pipe one (… | scriptctl do -).",
18
+ data: { expected: ["a file path or piped stdin"], actual: ["<tty, no pipe>"] },
20
19
  });
21
20
  }
22
21
  try {
23
22
  text = fs.readFileSync(0, "utf-8");
24
23
  }
25
24
  catch {
26
- throw new CliError("DO BLOCKED: no input", "no verb script on stdin.", {
25
+ throw new CliError("no verb script on stdin.", {
27
26
  exitCode: EXIT_USAGE,
28
- required: ["a file path or piped stdin"],
29
- received: ["<no stdin>"],
30
- nextSteps: ["Pass a file (scriptctl do edits.txt) or pipe one (… | scriptctl do -)."],
31
27
  errorCode: "DO_NO_INPUT",
28
+ hint: "Pass a file (scriptctl do edits.txt) or pipe one (… | scriptctl do -).",
29
+ data: { expected: ["a file path or piped stdin"], actual: ["<no stdin>"] },
32
30
  });
33
31
  }
34
32
  }
35
33
  else {
36
34
  if (!exists(file)) {
37
- throw new CliError("DO BLOCKED: file not found", "verb-script file not found.", {
35
+ throw new CliError("verb-script file not found.", {
38
36
  exitCode: EXIT_INPUT,
39
- required: ["an existing file"],
40
- received: [file],
41
- nextSteps: ["Check the path, or pipe via stdin with `-`."],
42
37
  errorCode: "DO_FILE_NOT_FOUND",
38
+ hint: "Check the path, or pipe via stdin with `-`.",
39
+ data: { expected: ["an existing file"], actual: [file] },
43
40
  });
44
41
  }
45
42
  text = readText(file);
@@ -62,22 +59,20 @@ export async function commandDo(opts) {
62
59
  }
63
60
  catch (err) {
64
61
  const detail = err instanceof CliError ? err.message : String(err);
65
- throw new CliError(`DO BLOCKED: line ${ln + 1}`, `line ${ln + 1}: ${detail}`, {
62
+ throw new CliError(`line ${ln + 1}: ${detail}`, {
66
63
  exitCode: EXIT_USAGE,
67
- required: ["a valid verb line"],
68
- received: [rawLines[ln].trim()],
69
- nextSteps: ["Fix this line; the whole script is one transaction (nothing is written until every line is valid)."],
70
64
  errorCode: "DO_LINE_INVALID",
65
+ hint: "Fix this line; the whole script is one transaction (nothing is written until every line is valid).",
66
+ data: { expected: ["a valid verb line"], actual: [rawLines[ln].trim()] },
71
67
  });
72
68
  }
73
69
  }
74
70
  if (ops.length === 0) {
75
- throw new CliError("DO BLOCKED: empty script", "no verb lines found.", {
71
+ throw new CliError("no verb lines found.", {
76
72
  exitCode: EXIT_USAGE,
77
- required: ["at least one verb line"],
78
- received: ["<empty>"],
79
- nextSteps: ["Provide one CLI verb per line (without the leading `scriptctl`)."],
80
73
  errorCode: "DO_EMPTY",
74
+ hint: "Provide one CLI verb per line (without the leading `scriptctl`).",
75
+ data: { expected: ["at least one verb line"], actual: ["<empty>"] },
81
76
  });
82
77
  }
83
78
  const apply = Boolean(opts["apply"]);
@@ -88,27 +83,25 @@ export async function commandDo(opts) {
88
83
  const planDigest = planned?.digest ?? null;
89
84
  const suppliedPlan = strOf(opts["plan"]).trim();
90
85
  if (session.version === 3 && suppliedPlan) {
91
- throw new CliError("DO BLOCKED: --plan is not supported for Script v3", "Script v3 do transactions do not use plan digests.", {
86
+ throw new CliError("Script v3 do transactions do not use plan digests.", {
92
87
  exitCode: EXIT_USAGE,
93
88
  errorCode: "MULTI_PLAN_USAGE_INVALID",
94
- received: [suppliedPlan],
95
- nextSteps: ["Remove --plan; omit --apply to preview a Script v3 do transaction."],
89
+ hint: "Remove --plan; omit --apply to preview a Script v3 do transaction.",
90
+ data: { actual: [suppliedPlan] },
96
91
  });
97
92
  }
98
93
  if (session.version === 4 && apply && !suppliedPlan) {
99
- throw new CliError("DO BLOCKED: plan required", "A Script v4 do transaction requires its dry-run plan digest.", {
94
+ throw new CliError("A Script v4 do transaction requires its dry-run plan digest.", {
100
95
  exitCode: EXIT_USAGE,
101
96
  errorCode: "MULTI_PLAN_REQUIRED",
102
- required: [planDigest ?? ""],
103
- received: ["<missing>"],
97
+ data: { expected: [planDigest ?? ""], actual: ["<missing>"] },
104
98
  });
105
99
  }
106
100
  if (session.version === 4 && apply && suppliedPlan !== planDigest) {
107
- throw new CliError("DO BLOCKED: plan mismatch", "The supplied digest does not match the current operations.", {
101
+ throw new CliError("The supplied digest does not match the current operations.", {
108
102
  exitCode: EXIT_INPUT,
109
103
  errorCode: "MULTI_PLAN_MISMATCH",
110
- required: [planDigest ?? ""],
111
- received: [suppliedPlan],
104
+ data: { expected: [planDigest ?? ""], actual: [suppliedPlan] },
112
105
  });
113
106
  }
114
107
  if (session.version === 4 && !apply && suppliedPlan) {
@@ -134,28 +127,30 @@ export async function commandDo(opts) {
134
127
  const legacyIssueLines = legacyValidation === null
135
128
  ? []
136
129
  : summarizeIssues(asList(legacyValidation["issues"]));
130
+ const issues = plannedIssueLines ?? legacyIssueLines;
131
+ const hint = passed
132
+ ? planDigest
133
+ ? `Run \`scriptctl do --apply --plan ${planDigest}\` with the same input to commit.`
134
+ : "Run `scriptctl do --apply` with the same input to commit."
135
+ : "Resolve validation issues before committing.";
136
+ const lines = [...head, `validation: ${passed ? "would pass" : "would need repair"}; no write`, ...issues, hint];
137
137
  const report = {
138
- title: "DO DRY-RUN (no write)",
139
- op: "script.do.dry-run",
140
- changed: false,
141
- result: [...head, `validation: ${passed ? "would pass" : "would need repair"}; dry-run, no write`],
142
- warnings: passed
143
- ? []
144
- : plannedIssueLines ?? legacyIssueLines,
145
- issues: plannedIssueLines ?? legacyIssueLines,
146
- artifacts: [session.artifactLabel],
147
- ...(planDigest ? {
148
- baseline: session.baselineHash,
149
- plan_digest: planDigest,
150
- operations: ops,
151
- targets: planned?.plan.targets,
152
- plan: planned?.plan,
153
- } : {}),
154
- next: [passed
155
- ? planDigest
156
- ? `Re-run with --apply --plan ${planDigest} to commit.`
157
- : "Re-run with --apply to commit."
158
- : "Resolve validation issues before committing."],
138
+ text: lines.join("\n"),
139
+ data: {
140
+ op: "script.do.dry-run",
141
+ changed: false,
142
+ matched: ops.length,
143
+ applied: applied.length,
144
+ issues,
145
+ script_path: session.artifactLabel,
146
+ ...(planDigest ? {
147
+ baseline: session.baselineHash,
148
+ plan_digest: planDigest,
149
+ operations: ops,
150
+ targets: planned?.plan.targets,
151
+ plan: planned?.plan,
152
+ } : {}),
153
+ },
159
154
  };
160
155
  return [report, passed ? EXIT_OK : EXIT_NEEDS_AGENT];
161
156
  }
@@ -164,23 +159,25 @@ export async function commandDo(opts) {
164
159
  await syncValidationResult(session, validation, newRevision);
165
160
  const passed = Boolean(validation["passed"]);
166
161
  const rev = session.remote ? `; rev ${newRevision}` : "";
162
+ const issues = summarizeIssues(asList(validation["issues"]));
163
+ const lines = [...head, `validation: ${passed ? "passed" : "needs repair"}${rev}`, ...issues];
167
164
  const report = {
168
- title: passed ? "DO APPLIED" : "DO APPLIED: Validation needs repair",
169
- op: "script.do",
170
- changed: applied.length > 0,
171
- ...(session.remote ? { idempotent } : {}),
172
- result: [...head, `validation: ${passed ? "passed" : "needs repair"}${rev}`],
173
- warnings: passed ? [] : summarizeIssues(asList(validation["issues"])),
174
- issues: summarizeIssues(asList(validation["issues"])),
175
- artifacts: [session.artifactLabel],
176
- ...(planDigest ? {
177
- baseline: session.baselineHash,
178
- plan_digest: planDigest,
179
- operations: ops,
180
- targets: planned?.plan.targets,
181
- plan: planned?.plan,
182
- } : {}),
183
- next: passed ? undefined : ["Inspect issues and fix."],
165
+ text: lines.join("\n"),
166
+ data: {
167
+ op: "script.do",
168
+ changed: applied.length > 0,
169
+ revision: session.remote ? newRevision : undefined,
170
+ idempotent: session.remote ? idempotent : undefined,
171
+ issues,
172
+ script_path: session.artifactLabel,
173
+ ...(planDigest ? {
174
+ baseline: session.baselineHash,
175
+ plan_digest: planDigest,
176
+ operations: ops,
177
+ targets: planned?.plan.targets,
178
+ plan: planned?.plan,
179
+ } : {}),
180
+ },
184
181
  };
185
182
  return [report, passed ? EXIT_OK : EXIT_NEEDS_AGENT];
186
183
  }