@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
@@ -0,0 +1,24 @@
1
+ # 0.51.0
2
+
3
+ ## Added
4
+ - `scriptctl audit-assets` performs a model-backed whole-script audit for duplicate actors, locations, props, equivalent visual states, and suspicious unused or singleton states without modifying the script.
5
+ - Text and video `scriptctl ingest` write `asset-audit.json` and include confirmed audit findings as non-blocking validation warnings.
6
+
7
+ ## Changed
8
+ - CLI help is generated from Commander command, argument, and option declarations. Commands now use standard `Usage`, `Commands`, `Arguments`, and `Options` sections.
9
+ - Added short options for frequent safe flags: `-h`, `-v`, `-j`, `-p`, `-w`, `-s`, `-o`, `-i`, `-g`, `-t`, `-a`, `-k`, and `-n`.
10
+
11
+ ## Fixed
12
+ - Asset, state, and reference queries expose structured address rows, so `--format addr` returns their matched addresses.
13
+ - `-j` selects JSON error output when combined with another short option, without misreading option values, invalid clusters, or tokens after `--`.
14
+ - Text errors include the relevant received inputs and expected shape when diagnostic data is available.
15
+ - `scriptctl view --watch --json` emits its startup JSON while the server is running and keeps stdout as a single parseable document.
16
+ - `scriptctl update` includes package-manager exit and stderr diagnostics in default error output.
17
+ - `scriptctl ingest status --help` documents its workspace option, and ingest help identifies the generated Script version correctly.
18
+ - Edit command help identifies the supported address kinds and provides a valid `scene-ref` example.
19
+ - `scriptctl issues --json` preserves filtered validation issues as structured `issues`.
20
+
21
+ ## Breaking
22
+ - Default text output is command-specific and concise; the shared `Required`, `Received`, `Result`, `Artifacts`, `Issues`, and `Next` report sections are removed.
23
+ - Text errors are written to stderr. JSON errors remain on stdout with `ok`, `exit_code`, `error_code`, `message`, optional `hint`, and typed diagnostic fields.
24
+ - JSON output no longer includes the presentation fields `title`, `result`, `artifacts`, `required`, `received`, or `next`. Commands expose structured business data directly; table queries use `rows` and `row_columns`, and dump commands use `content`.
@@ -0,0 +1,15 @@
1
+ # 0.51.1
2
+
3
+ ## Added
4
+ - None.
5
+
6
+ ## Changed
7
+ - Video `scriptctl ingest` sends standard screenplay `parenthetical` hints for dialogue and inner thought directly to Script v4, covering observable delivery, emotion, reaction, and brief accompanying actions.
8
+ - Video `scriptctl ingest` stores each actor once per scene with the complete set of visible durable states, producing one Script v4 actor reference with its full `state_ids` set. Existing video checkpoints must be rebuilt with `--force`.
9
+ - The bundled `scriptctl` skill uses short options in commands and examples whenever the CLI provides one.
10
+
11
+ ## Fixed
12
+ - None.
13
+
14
+ ## Breaking
15
+ - None.
@@ -1,8 +1,7 @@
1
1
  # Unreleased
2
2
 
3
3
  ## Added
4
- - `scriptctl audit-assets` performs a model-backed whole-script audit for duplicate actors, locations, props, equivalent visual states, and suspicious unused or singleton states without modifying the script.
5
- - Text and video `scriptctl ingest` write `asset-audit.json` and include confirmed audit findings as non-blocking validation warnings.
4
+ - None.
6
5
 
7
6
  ## Changed
8
7
  - None.
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ import { type RunState } from "./registry.js";
3
+ export declare function registerBatchCommands(program: Command, state: RunState): void;
@@ -0,0 +1,28 @@
1
+ import { commandDo } from "../usecases/script/do.js";
2
+ import { commandScriptPatch } from "../usecases/script/script-patch.js";
3
+ import { describeArguments, dispatch, withScriptOpts } from "./registry.js";
4
+ export function registerBatchCommands(program, state) {
5
+ const doCommand = withScriptOpts(program.command("do [file]"))
6
+ .description("Run one CLI edit per line as one transaction")
7
+ .option("--apply", "Apply the planned transaction")
8
+ .option("--plan <digest>", "Exact plan digest to apply")
9
+ .option("-n, --dry-run", "Preview the transaction without writing")
10
+ .addHelpText("after", "\nExample:\n scriptctl do edits.txt\n scriptctl do edits.txt --apply --plan <digest>\n")
11
+ .action(dispatch(commandDo, state));
12
+ describeArguments(doCommand, ["Command file, or stdin when omitted"]);
13
+ const patch = withScriptOpts(program.command("patch [file]"))
14
+ .description("Apply structured JSON patch operations")
15
+ .option("--schema [op]", "Show every operation schema or one named operation")
16
+ .option("-n, --dry-run", "Preview patch operations without writing")
17
+ .option("--apply", "Apply the exact planned patch")
18
+ .option("--plan <digest>", "Exact plan digest to apply")
19
+ .addHelpText("after", "\nExample:\n scriptctl patch --schema\n scriptctl patch changes.json --dry-run\n")
20
+ .action(dispatch((opts) => {
21
+ const args = opts["_args"] || [];
22
+ if (args[0])
23
+ opts["patch"] = args[0];
24
+ return commandScriptPatch(opts);
25
+ }, state));
26
+ describeArguments(patch, ["Patch JSON file"]);
27
+ }
28
+ //# sourceMappingURL=register-batch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-batch.js","sourceRoot":"","sources":["../../src/cli/register-batch.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAiB,cAAc,EAAE,MAAM,eAAe,CAAC;AAE3F,MAAM,UAAU,qBAAqB,CAAC,OAAgB,EAAE,KAAe;IACrE,MAAM,SAAS,GAAG,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;SAC3D,WAAW,CAAC,8CAA8C,CAAC;SAC3D,MAAM,CAAC,SAAS,EAAE,+BAA+B,CAAC;SAClD,MAAM,CAAC,iBAAiB,EAAE,4BAA4B,CAAC;SACvD,MAAM,CAAC,eAAe,EAAE,yCAAyC,CAAC;SAClE,WAAW,CAAC,OAAO,EAAE,0FAA0F,CAAC;SAChH,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;IACtC,iBAAiB,CAAC,SAAS,EAAE,CAAC,qCAAqC,CAAC,CAAC,CAAC;IAEtE,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;SAC1D,WAAW,CAAC,wCAAwC,CAAC;SACrD,MAAM,CAAC,eAAe,EAAE,oDAAoD,CAAC;SAC7E,MAAM,CAAC,eAAe,EAAE,0CAA0C,CAAC;SACnE,MAAM,CAAC,SAAS,EAAE,+BAA+B,CAAC;SAClD,MAAM,CAAC,iBAAiB,EAAE,4BAA4B,CAAC;SACvD,WAAW,CAAC,OAAO,EAAE,oFAAoF,CAAC;SAC1G,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE;QACxB,MAAM,IAAI,GAAI,IAAI,CAAC,OAAO,CAAc,IAAI,EAAE,CAAC;QAC/C,IAAI,IAAI,CAAC,CAAC,CAAC;YAAE,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACrC,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;IACb,iBAAiB,CAAC,KAAK,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;AAChD,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { Command } from "commander";
2
+ import { type LlmComposition } from "../llm/composition.js";
3
+ import { type RunState } from "./registry.js";
4
+ export declare function registerEditCommands(program: Command, state: RunState, llm: LlmComposition): void;
@@ -0,0 +1,226 @@
1
+ import { commandAddActor } from "../usecases/script/add-actor.js";
2
+ import { commandAddEpisode } from "../usecases/script/add-episode.js";
3
+ import { commandAddLocation } from "../usecases/script/add-location.js";
4
+ import { commandAddProp } from "../usecases/script/add-prop.js";
5
+ import { commandActor } from "../usecases/script/actor.js";
6
+ import { commandAlias } from "../usecases/script/alias.js";
7
+ import { commandContext } from "../usecases/script/context.js";
8
+ import { commandCreate } from "../usecases/script/create.js";
9
+ import { commandDelete } from "../usecases/script/delete.js";
10
+ import { commandDescribe } from "../usecases/script/describe.js";
11
+ import { commandDialogue } from "../usecases/script/dialogue.js";
12
+ import { commandEmotion } from "../usecases/script/emotion.js";
13
+ import { commandExtend } from "../usecases/script/extend.js";
14
+ import { commandImportance } from "../usecases/script/importance.js";
15
+ import { commandInsert } from "../usecases/script/insert.js";
16
+ import { commandMerge } from "../usecases/script/merge.js";
17
+ import { commandMove } from "../usecases/script/move.js";
18
+ import { commandParenthetical } from "../usecases/script/parenthetical.js";
19
+ import { commandRename } from "../usecases/script/rename.js";
20
+ import { commandReplace } from "../usecases/script/replace.js";
21
+ import { commandRole } from "../usecases/script/role.js";
22
+ import { commandSplit } from "../usecases/script/split.js";
23
+ import { commandStateAdd } from "../usecases/script/state-add.js";
24
+ import { commandStateDelete } from "../usecases/script/state-delete.js";
25
+ import { commandStateRename } from "../usecases/script/state-rename.js";
26
+ import { commandSynopsis } from "../usecases/script/synopsis.js";
27
+ import { commandSynopsisGenerate } from "../usecases/script/synopsis-generate.js";
28
+ import { commandTransition } from "../usecases/script/transition.js";
29
+ import { commandType } from "../usecases/script/type.js";
30
+ import { commandWorldview } from "../usecases/script/worldview.js";
31
+ import { appendString, describeArguments, dispatch, withScriptOpts, withSelection, } from "./registry.js";
32
+ export function registerEditCommands(program, state, llm) {
33
+ withScriptOpts(program.command("create"))
34
+ .description("Create an empty script")
35
+ .option("--title <title>", "Script title")
36
+ .option("--force", "Replace an existing script file")
37
+ .action(dispatch(commandCreate, state));
38
+ const addActor = withScriptOpts(program.command("add-actor <name>"))
39
+ .description("Add an actor")
40
+ .option("--id <id>", "Actor ID")
41
+ .option("--role <role>", "Actor role")
42
+ .option("--description <text>", "Actor description")
43
+ .option("--alias <alias>", "Actor alias; repeatable", appendString, [])
44
+ .action(dispatch(commandAddActor, state));
45
+ describeArguments(addActor, ["Actor name"]);
46
+ const addLocation = withScriptOpts(program.command("add-location <name>"))
47
+ .description("Add a location")
48
+ .option("--id <id>", "Location ID")
49
+ .option("--description <text>", "Location description")
50
+ .action(dispatch(commandAddLocation, state));
51
+ describeArguments(addLocation, ["Location name"]);
52
+ const addProp = withScriptOpts(program.command("add-prop <name>"))
53
+ .description("Add a prop")
54
+ .option("--id <id>", "Prop ID")
55
+ .option("--description <text>", "Prop description")
56
+ .action(dispatch(commandAddProp, state));
57
+ describeArguments(addProp, ["Prop name"]);
58
+ withScriptOpts(program.command("add-episode"))
59
+ .description("Append an episode")
60
+ .option("--id <id>", "Episode ID")
61
+ .option("--title <title>", "Episode title")
62
+ .action(dispatch(commandAddEpisode, state));
63
+ const replace = withSelection(withScriptOpts(program.command("replace [at]")))
64
+ .description("Replace action text at one address or across a selection")
65
+ .requiredOption("--from <text>", "Text or pattern to replace")
66
+ .option("--to <text>", "Replacement text", "")
67
+ .option("--all", "Replace every occurrence")
68
+ .option("--regex", "Treat --from as a regular expression")
69
+ .addHelpText("after", "\nExample:\n scriptctl replace --in ep_001 -g \"old\" --from old --to new\n")
70
+ .action(dispatch(commandReplace, state));
71
+ describeArguments(replace, ["Single action address"]);
72
+ const type = withSelection(withScriptOpts(program.command("type [at] [type]")))
73
+ .description("Set action type at one address or across a selection")
74
+ .action(dispatch(commandType, state));
75
+ describeArguments(type, ["Single action address", "New action type"]);
76
+ const actor = withSelection(withScriptOpts(program.command("actor [at] [actor-id]")))
77
+ .description("Set an action actor at one address or across a selection")
78
+ .action(dispatch(commandActor, state));
79
+ describeArguments(actor, ["Single action address", "Actor ID"]);
80
+ const emotion = withSelection(withScriptOpts(program.command("emotion [at] [emotion]")))
81
+ .description("Set or clear action emotion")
82
+ .option("--clear", "Clear the emotion")
83
+ .action(dispatch(commandEmotion, state));
84
+ describeArguments(emotion, ["Single action address", "Emotion value"]);
85
+ const parenthetical = withSelection(withScriptOpts(program.command("parenthetical [at]")))
86
+ .description("Set or remove a dialogue parenthetical")
87
+ .option("--set <text>", "Parenthetical text")
88
+ .option("--remove", "Remove the parenthetical")
89
+ .action(dispatch(commandParenthetical, state));
90
+ describeArguments(parenthetical, ["Single action address"]);
91
+ const insert = withScriptOpts(program.command("insert <addr>"))
92
+ .description("Insert an action into a scene or a scene into an episode")
93
+ .option("-t, --type <type>", "Action type")
94
+ .option("--content <text>", "Action content")
95
+ .option("--emotion <emotion>", "Dialogue emotion")
96
+ .option("--parenthetical <text>", "Dialogue parenthetical")
97
+ .option("--action-id <id>", "Action ID")
98
+ .option("--at <idx>", "Numeric insertion position")
99
+ .option("--before <addr>", "Insert before this sibling")
100
+ .option("--after <addr>", "Insert after this sibling")
101
+ .option("-a, --actor <id>", "Actor ID")
102
+ .option("--speaker-state <id>", "Actor state ID")
103
+ .option("-k, --kind <kind>", "Non-actor speaker kind")
104
+ .option("--label <text>", "Non-actor speaker label")
105
+ .option("--location <id>", "Scene location ID")
106
+ .option("--time <time>", "Scene time")
107
+ .option("--space <space>", "Scene space")
108
+ .option("--scene-id <id>", "Scene ID")
109
+ .option("--state <id>", "Asset state ID; repeatable", appendString, [])
110
+ .action(dispatch(commandInsert, state));
111
+ describeArguments(insert, ["Episode or scene address"]);
112
+ const deleteCommand = withScriptOpts(program.command("delete <addr>"))
113
+ .description("Delete an action, scene, asset, state, or speaker")
114
+ .option("--strategy <strategy>", "Reference handling strategy")
115
+ .option("--replacement <addr>", "Replacement address for references")
116
+ .option("--force", "Allow guarded destructive deletion")
117
+ .action(dispatch(commandDelete, state));
118
+ describeArguments(deleteCommand, ["Address to delete"]);
119
+ const move = withScriptOpts(program.command("move <addr> <to>"))
120
+ .description("Move an action across scenes or a scene across episodes")
121
+ .option("--at <idx>", "Numeric destination position")
122
+ .option("--before <id>", "Place before this sibling ID")
123
+ .option("--after <id>", "Place after this sibling ID")
124
+ .action(dispatch(commandMove, state));
125
+ describeArguments(move, ["Action or scene address", "Destination scene or episode address"]);
126
+ const split = withScriptOpts(program.command("split <ep/scn>"))
127
+ .description("Split a scene")
128
+ .requiredOption("--at <index-or-action-id>", "Split position")
129
+ .option("--new-scene-id <id>", "ID for the new scene")
130
+ .action(dispatch(commandSplit, state));
131
+ describeArguments(split, ["Scene address"]);
132
+ const merge = withScriptOpts(program.command("merge <src>"))
133
+ .description("Merge one asset or scene into another")
134
+ .requiredOption("--into <dst>", "Destination asset or scene address")
135
+ .action(dispatch(commandMerge, state));
136
+ describeArguments(merge, ["Source asset or scene address"]);
137
+ const transition = withSelection(withScriptOpts(program.command("transition [at] [target]")))
138
+ .description("Set or clear an action transition")
139
+ .option("--process <text>", "Transition process")
140
+ .option("--contrast <text>", "Transition contrast")
141
+ .option("--clear", "Clear the transition")
142
+ .action(dispatch(commandTransition, state));
143
+ describeArguments(transition, ["Single action address", "Transition target"]);
144
+ const sceneRef = withScriptOpts(program.command("scene-ref <at> <target>"))
145
+ .description("Set or remove an asset reference in a scene")
146
+ .option("--state <id>", "Target state ID; repeatable", appendString, [])
147
+ .option("--clear", "Clear the matching v3 reference state")
148
+ .option("--remove", "Remove the matching reference")
149
+ .option("--append", "Append instead of replacing")
150
+ .option("--occurrence <n>", "Target occurrence number")
151
+ .addHelpText("after", "\nExample:\n scriptctl scene-ref ep_001/scn_001 actor:act_001 --state st_calm\n")
152
+ .action(dispatch(commandContext, state));
153
+ describeArguments(sceneRef, ["Scene address", "Referenced asset address"]);
154
+ const rename = withScriptOpts(program.command("rename <target> <name>"))
155
+ .description("Rename an asset or state")
156
+ .action(dispatch(commandRename, state));
157
+ describeArguments(rename, ["Asset or state address", "New name"]);
158
+ const describe = withScriptOpts(program.command("describe <target> <text>"))
159
+ .description("Set an asset or state description")
160
+ .action(dispatch(commandDescribe, state));
161
+ describeArguments(describe, ["Asset or state address", "Description"]);
162
+ const alias = withScriptOpts(program.command("alias <target>"))
163
+ .description("Add or remove asset aliases")
164
+ .option("--add <alias>", "Alias to add; repeatable", appendString, [])
165
+ .option("--remove <alias>", "Alias to remove; repeatable", appendString, [])
166
+ .action(dispatch(commandAlias, state));
167
+ describeArguments(alias, ["Asset address"]);
168
+ for (const [name, description, handler, second] of [
169
+ ["role", "Set an actor role", commandRole, "Role"],
170
+ ["importance", "Set asset importance", commandImportance, "Importance"],
171
+ ]) {
172
+ const command = withScriptOpts(program.command(`${name} <target> <value>`))
173
+ .description(description)
174
+ .action(dispatch(handler, state));
175
+ describeArguments(command, ["Asset address", second]);
176
+ }
177
+ const worldview = withScriptOpts(program.command("worldview <value>"))
178
+ .description("Set the script worldview")
179
+ .action(dispatch(commandWorldview, state));
180
+ describeArguments(worldview, ["Worldview value"]);
181
+ const synopsis = withScriptOpts(program.command("synopsis [target-or-text] [text]"))
182
+ .description("Set script or episode synopsis text")
183
+ .action(dispatch(commandSynopsis, state));
184
+ describeArguments(synopsis, ["Episode address or script synopsis", "Episode synopsis text"]);
185
+ withScriptOpts(synopsis.command("generate"))
186
+ .description("Generate synopsis fields with an LLM")
187
+ .option("--llm-config <path>", "LLM configuration file")
188
+ .option("--concurrency <n>", "Maximum concurrent model calls", "30")
189
+ .option("--checkpoint <dir>", "Checkpoint directory")
190
+ .option("--overwrite", "Regenerate existing synopsis fields")
191
+ .option("--apply", "Write generated fields")
192
+ .option("-n, --dry-run", "Generate a preview without writing")
193
+ .action(dispatch((options) => commandSynopsisGenerate(options, llm), state));
194
+ const extend = withScriptOpts(program.command("extend <addr> [key] [value]"))
195
+ .description("Read, set, or clear extension data")
196
+ .option("--json-value", "Parse the value as JSON")
197
+ .option("--clear", "Delete the key or extension container")
198
+ .action(dispatch(commandExtend, state));
199
+ describeArguments(extend, ["Target address", "Extension key", "Extension value"]);
200
+ const stateAdd = withScriptOpts(program.command("state-add <target> <name>"))
201
+ .description("Add an asset state")
202
+ .option("--description <text>", "State description", "")
203
+ .option("--state-id <id>", "State ID")
204
+ .action(dispatch(commandStateAdd, state));
205
+ describeArguments(stateAdd, ["Asset address", "State name"]);
206
+ const stateRename = withScriptOpts(program.command("state-rename <target> <name>"))
207
+ .description("Rename an asset state")
208
+ .action(dispatch(commandStateRename, state));
209
+ describeArguments(stateRename, ["State address", "New name"]);
210
+ const stateDelete = withScriptOpts(program.command("state-delete <target>"))
211
+ .description("Delete an asset state")
212
+ .requiredOption("--strategy <strategy>", "Reference handling strategy")
213
+ .option("--replacement <id>", "Replacement state ID")
214
+ .action(dispatch(commandStateDelete, state));
215
+ describeArguments(stateDelete, ["State address"]);
216
+ const dialogue = withScriptOpts(program.command("dialogue <at>"))
217
+ .description("Set the speaker for dialogue or inner thought")
218
+ .option("-a, --actor <id>", "Actor speaker ID")
219
+ .option("--state <id>", "Actor state ID")
220
+ .option("-k, --kind <kind>", "Non-actor speaker kind")
221
+ .option("--label <text>", "Non-actor speaker label")
222
+ .addHelpText("after", "\nExample:\n scriptctl dialogue ep_001/scn_001#3 --actor act_001\n")
223
+ .action(dispatch(commandDialogue, state));
224
+ describeArguments(dialogue, ["Dialogue action address"]);
225
+ }
226
+ //# sourceMappingURL=register-edits.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-edits.js","sourceRoot":"","sources":["../../src/cli/register-edits.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { Command } from "commander";
2
+ import { type LlmComposition } from "../llm/composition.js";
3
+ import { type RunState } from "./registry.js";
4
+ export declare function registerQueryCommands(program: Command, state: RunState, llm: LlmComposition): void;
@@ -0,0 +1,93 @@
1
+ import { commandActions } from "../usecases/script/actions.js";
2
+ import { commandActors } from "../usecases/script/actors.js";
3
+ import { commandAssets } from "../usecases/script/assets.js";
4
+ import { commandAuditAssets } from "../usecases/script/audit-assets.js";
5
+ import { commandEpisodes } from "../usecases/script/episodes.js";
6
+ import { commandIds } from "../usecases/script/ids.js";
7
+ import { commandIssues } from "../usecases/script/issues.js";
8
+ import { commandLocations } from "../usecases/script/locations.js";
9
+ import { commandProps } from "../usecases/script/props.js";
10
+ import { commandRefs } from "../usecases/script/refs.js";
11
+ import { commandScenes } from "../usecases/script/scenes.js";
12
+ import { commandScriptValidate } from "../usecases/script/script-validate.js";
13
+ import { commandStates } from "../usecases/script/states.js";
14
+ import { commandSummary } from "../usecases/script/summary.js";
15
+ import { describeArguments, dispatch, withScriptOpts } from "./registry.js";
16
+ export function registerQueryCommands(program, state, llm) {
17
+ withScriptOpts(program.command("summary"), "read")
18
+ .description("Show a compact script summary")
19
+ .action(dispatch(commandSummary, state));
20
+ withScriptOpts(program.command("episodes"), "read")
21
+ .description("List episodes")
22
+ .option("--id <id>", "Filter by episode ID")
23
+ .option("-i, --in <addr>", "Limit results to an address")
24
+ .option("--min-chars <n>", "Minimum episode character count")
25
+ .option("--max-chars <n>", "Maximum episode character count")
26
+ .action(dispatch(commandEpisodes, state));
27
+ withScriptOpts(program.command("scenes"), "read")
28
+ .description("List scenes")
29
+ .option("-i, --in <addr>", "Limit results to an address")
30
+ .option("--has-actor <id>", "Require an actor reference")
31
+ .option("--has-location <id>", "Require a location reference")
32
+ .option("--has-prop <id>", "Require a prop reference")
33
+ .action(dispatch(commandScenes, state));
34
+ withScriptOpts(program.command("actions"), "read")
35
+ .description("List actions")
36
+ .option("-i, --in <addr>", "Limit results to an address or range")
37
+ .option("-g, --grep <text>", "Match action text")
38
+ .option("-t, --type <type>", "Filter by action type")
39
+ .option("-a, --actor <id>", "Filter by actor ID")
40
+ .option("--has <kind>", "Require a populated action facet")
41
+ .option("--context <n>", "Include surrounding actions")
42
+ .addHelpText("after", "\nExample:\n scriptctl actions --in ep_001/scn_001 --grep \"door\"\n")
43
+ .action(dispatch(commandActions, state));
44
+ for (const [name, description, handler] of [
45
+ ["actors", "List actors", commandActors],
46
+ ["locations", "List locations", commandLocations],
47
+ ["props", "List props", commandProps],
48
+ ]) {
49
+ withScriptOpts(program.command(name), "read")
50
+ .description(description)
51
+ .option("--id <id>", `Filter ${name} by ID`)
52
+ .option("--name <text>", `Filter ${name} by name`)
53
+ .option("-i, --in <addr>", "Limit results to an address")
54
+ .option("--counts", "Include reference counts")
55
+ .action(dispatch(handler, state));
56
+ }
57
+ withScriptOpts(program.command("assets"), "read")
58
+ .description("List actors, locations, and props")
59
+ .option("-k, --kind <kind>", "Filter by asset kind")
60
+ .option("--id <id>", "Filter by asset ID")
61
+ .option("--name <text>", "Filter by asset name")
62
+ .option("-i, --in <addr>", "Limit results to an address")
63
+ .option("--counts", "Include reference counts")
64
+ .action(dispatch(commandAssets, state));
65
+ const states = withScriptOpts(program.command("states <asset-addr>"), "read")
66
+ .description("List states for an asset")
67
+ .action(dispatch(commandStates, state));
68
+ describeArguments(states, ["Actor, location, or prop address"]);
69
+ withScriptOpts(program.command("issues"), "read")
70
+ .description("List validation issues")
71
+ .option("--severity <severity>", "Filter by severity")
72
+ .option("--code <code>", "Filter by issue code")
73
+ .action(dispatch(commandIssues, state));
74
+ const refs = withScriptOpts(program.command("refs <addr>"), "read")
75
+ .description("List references to an address")
76
+ .option("--level <level>", "Reference detail level")
77
+ .action(dispatch(commandRefs, state));
78
+ describeArguments(refs, ["Address to inspect"]);
79
+ withScriptOpts(program.command("validate"), "read")
80
+ .description("Validate the script")
81
+ .action(dispatch(commandScriptValidate, state));
82
+ withScriptOpts(program.command("audit-assets"), "read")
83
+ .description("Audit asset consistency with an LLM")
84
+ .option("--llm-config <path>", "LLM configuration file")
85
+ .option("-o, --output <path>", "Audit JSON output file")
86
+ .action(dispatch((options) => commandAuditAssets(options, llm), state));
87
+ withScriptOpts(program.command("ids"), "read")
88
+ .description("Generate unreserved candidate IDs")
89
+ .requiredOption("-k, --kind <kind>", "ID kind")
90
+ .requiredOption("--count <n>", "Number of IDs")
91
+ .action(dispatch(commandIds, state));
92
+ }
93
+ //# sourceMappingURL=register-query.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-query.js","sourceRoot":"","sources":["../../src/cli/register-query.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAiB,cAAc,EAAE,MAAM,eAAe,CAAC;AAE3F,MAAM,UAAU,qBAAqB,CAAC,OAAgB,EAAE,KAAe,EAAE,GAAmB;IAC1F,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;SAC/C,WAAW,CAAC,+BAA+B,CAAC;SAC5C,MAAM,CAAC,QAAQ,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC;IAE3C,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;SAChD,WAAW,CAAC,eAAe,CAAC;SAC5B,MAAM,CAAC,WAAW,EAAE,sBAAsB,CAAC;SAC3C,MAAM,CAAC,iBAAiB,EAAE,6BAA6B,CAAC;SACxD,MAAM,CAAC,iBAAiB,EAAE,iCAAiC,CAAC;SAC5D,MAAM,CAAC,iBAAiB,EAAE,iCAAiC,CAAC;SAC5D,MAAM,CAAC,QAAQ,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC,CAAC;IAE5C,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;SAC9C,WAAW,CAAC,aAAa,CAAC;SAC1B,MAAM,CAAC,iBAAiB,EAAE,6BAA6B,CAAC;SACxD,MAAM,CAAC,kBAAkB,EAAE,4BAA4B,CAAC;SACxD,MAAM,CAAC,qBAAqB,EAAE,8BAA8B,CAAC;SAC7D,MAAM,CAAC,iBAAiB,EAAE,0BAA0B,CAAC;SACrD,MAAM,CAAC,QAAQ,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC;IAE1C,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;SAC/C,WAAW,CAAC,cAAc,CAAC;SAC3B,MAAM,CAAC,iBAAiB,EAAE,sCAAsC,CAAC;SACjE,MAAM,CAAC,mBAAmB,EAAE,mBAAmB,CAAC;SAChD,MAAM,CAAC,mBAAmB,EAAE,uBAAuB,CAAC;SACpD,MAAM,CAAC,kBAAkB,EAAE,oBAAoB,CAAC;SAChD,MAAM,CAAC,cAAc,EAAE,kCAAkC,CAAC;SAC1D,MAAM,CAAC,eAAe,EAAE,6BAA6B,CAAC;SACtD,WAAW,CAAC,OAAO,EAAE,uEAAuE,CAAC;SAC7F,MAAM,CAAC,QAAQ,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC;IAE3C,KAAK,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,IAAI;QACzC,CAAC,QAAQ,EAAE,aAAa,EAAE,aAAa,CAAC;QACxC,CAAC,WAAW,EAAE,gBAAgB,EAAE,gBAAgB,CAAC;QACjD,CAAC,OAAO,EAAE,YAAY,EAAE,YAAY,CAAC;KAC7B,EAAE,CAAC;QACX,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;aAC1C,WAAW,CAAC,WAAW,CAAC;aACxB,MAAM,CAAC,WAAW,EAAE,UAAU,IAAI,QAAQ,CAAC;aAC3C,MAAM,CAAC,eAAe,EAAE,UAAU,IAAI,UAAU,CAAC;aACjD,MAAM,CAAC,iBAAiB,EAAE,6BAA6B,CAAC;aACxD,MAAM,CAAC,UAAU,EAAE,0BAA0B,CAAC;aAC9C,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IACtC,CAAC;IAED,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;SAC9C,WAAW,CAAC,mCAAmC,CAAC;SAChD,MAAM,CAAC,mBAAmB,EAAE,sBAAsB,CAAC;SACnD,MAAM,CAAC,WAAW,EAAE,oBAAoB,CAAC;SACzC,MAAM,CAAC,eAAe,EAAE,sBAAsB,CAAC;SAC/C,MAAM,CAAC,iBAAiB,EAAE,6BAA6B,CAAC;SACxD,MAAM,CAAC,UAAU,EAAE,0BAA0B,CAAC;SAC9C,MAAM,CAAC,QAAQ,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC;IAE1C,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAC;SAC1E,WAAW,CAAC,0BAA0B,CAAC;SACvC,MAAM,CAAC,QAAQ,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC;IAC1C,iBAAiB,CAAC,MAAM,EAAE,CAAC,kCAAkC,CAAC,CAAC,CAAC;IAEhE,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;SAC9C,WAAW,CAAC,wBAAwB,CAAC;SACrC,MAAM,CAAC,uBAAuB,EAAE,oBAAoB,CAAC;SACrD,MAAM,CAAC,eAAe,EAAE,sBAAsB,CAAC;SAC/C,MAAM,CAAC,QAAQ,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC;IAE1C,MAAM,IAAI,GAAG,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;SAChE,WAAW,CAAC,+BAA+B,CAAC;SAC5C,MAAM,CAAC,iBAAiB,EAAE,wBAAwB,CAAC;SACnD,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;IACxC,iBAAiB,CAAC,IAAI,EAAE,CAAC,oBAAoB,CAAC,CAAC,CAAC;IAEhD,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;SAChD,WAAW,CAAC,qBAAqB,CAAC;SAClC,MAAM,CAAC,QAAQ,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC,CAAC;IAElD,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;SACpD,WAAW,CAAC,qCAAqC,CAAC;SAClD,MAAM,CAAC,qBAAqB,EAAE,wBAAwB,CAAC;SACvD,MAAM,CAAC,qBAAqB,EAAE,wBAAwB,CAAC;SACvD,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,kBAAkB,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;IAE1E,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;SAC3C,WAAW,CAAC,mCAAmC,CAAC;SAChD,cAAc,CAAC,mBAAmB,EAAE,SAAS,CAAC;SAC9C,cAAc,CAAC,aAAa,EAAE,eAAe,CAAC;SAC9C,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;AACzC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ import { type RunState } from "./registry.js";
3
+ export declare function registerToolCommands(program: Command, state: RunState): void;
@@ -0,0 +1,23 @@
1
+ import { commandChangelog } from "../usecases/changelog.js";
2
+ import { commandDoctor } from "../usecases/doctor.js";
3
+ import { commandUpdate } from "../usecases/update.js";
4
+ import { describeArguments, dispatch } from "./registry.js";
5
+ export function registerToolCommands(program, state) {
6
+ program.command("doctor")
7
+ .description("Check configuration and runtime dependencies")
8
+ .option("--llm-config <path>", "LLM configuration file")
9
+ .action(dispatch(commandDoctor, state));
10
+ program.command("update")
11
+ .description("Update scriptctl to the latest release")
12
+ .option("-n, --dry-run", "Show the update without installing")
13
+ .option("--patch", "Allow a patch-level update")
14
+ .action(dispatch(commandUpdate, state));
15
+ const changelog = program.command("changelog [version]")
16
+ .description("Show release notes")
17
+ .option("--from <version>", "Start version")
18
+ .option("--to <version>", "End version")
19
+ .option("--unreleased", "Show unreleased changes")
20
+ .action(dispatch(commandChangelog, state));
21
+ describeArguments(changelog, ["Release version"]);
22
+ }
23
+ //# sourceMappingURL=register-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-tools.js","sourceRoot":"","sources":["../../src/cli/register-tools.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAiB,MAAM,eAAe,CAAC;AAE3E,MAAM,UAAU,oBAAoB,CAAC,OAAgB,EAAE,KAAe;IACpE,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC;SACtB,WAAW,CAAC,8CAA8C,CAAC;SAC3D,MAAM,CAAC,qBAAqB,EAAE,wBAAwB,CAAC;SACvD,MAAM,CAAC,QAAQ,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC;IAE1C,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC;SACtB,WAAW,CAAC,wCAAwC,CAAC;SACrD,MAAM,CAAC,eAAe,EAAE,oCAAoC,CAAC;SAC7D,MAAM,CAAC,SAAS,EAAE,4BAA4B,CAAC;SAC/C,MAAM,CAAC,QAAQ,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC;IAE1C,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,qBAAqB,CAAC;SACrD,WAAW,CAAC,oBAAoB,CAAC;SACjC,MAAM,CAAC,kBAAkB,EAAE,eAAe,CAAC;SAC3C,MAAM,CAAC,gBAAgB,EAAE,aAAa,CAAC;SACvC,MAAM,CAAC,cAAc,EAAE,yBAAyB,CAAC;SACjD,MAAM,CAAC,QAAQ,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC,CAAC;IAC7C,iBAAiB,CAAC,SAAS,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;AACpD,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { Command } from "commander";
2
+ import { type LlmComposition } from "../llm/composition.js";
3
+ import { type RunState } from "./registry.js";
4
+ export declare function registerWorkflowCommands(program: Command, state: RunState, llm: LlmComposition): void;
@@ -0,0 +1,71 @@
1
+ import { commandIngest } from "../usecases/ingest/command.js";
2
+ import { commandIngestStatus } from "../usecases/ingest/status.js";
3
+ import { commandView } from "../usecases/ingest/view-command.js";
4
+ import { commandExportAuthoring } from "../usecases/script/export-authoring.js";
5
+ import { commandCheckout, commandWorkingCopyPublish, commandWorkingCopyStatus, } from "../usecases/script/working-copy.js";
6
+ import { commandWriteAuthoring } from "../usecases/script/write-authoring.js";
7
+ import { describeArguments, dispatch, withScriptOpts, withWorkingCopyOpts, } from "./registry.js";
8
+ export function registerWorkflowCommands(program, state, llm) {
9
+ const ingest = program.command("ingest")
10
+ .description("Convert source files into a Script v4 workspace")
11
+ .option("-s, --source-path <path>", "Source file or directory")
12
+ .option("-w, --workspace-path <path>", "Workspace directory", "workspace")
13
+ .option("--llm-config <path>", "LLM configuration file")
14
+ .option("--concurrency <n>", "Maximum concurrent model calls")
15
+ .option("--fps <n>", "Video sampling rate")
16
+ .option("--force", "Rebuild completed stages")
17
+ .addHelpText("after", "\nExample:\n scriptctl ingest --source-path ./draft.md --workspace-path ./workspace\n")
18
+ .action(dispatch((options) => commandIngest(options, llm), state));
19
+ ingest.command("status")
20
+ .description("Show ingest workspace progress")
21
+ .option("-w, --workspace-path <path>", "Workspace directory")
22
+ .action(dispatch(commandIngestStatus, state));
23
+ program.command("view")
24
+ .description("Render or serve the workspace review page")
25
+ .option("-w, --workspace-path <path>", "Workspace directory", "workspace")
26
+ .option("--watch", "Serve and refresh the review page")
27
+ .option("--port <n>", "HTTP server port")
28
+ .action(dispatch(commandView, state));
29
+ withWorkingCopyOpts(program.command("checkout"))
30
+ .description("Download a remote script into a managed local copy")
31
+ .option("--discard-local", "Replace an existing dirty local copy")
32
+ .action(dispatch(commandCheckout, state));
33
+ withScriptOpts(program.command("status"), "read")
34
+ .description("Show local working-copy state")
35
+ .action(dispatch(commandWorkingCopyStatus, state));
36
+ withWorkingCopyOpts(program.command("publish"))
37
+ .description("Validate and publish the local working copy")
38
+ .action(dispatch(commandWorkingCopyPublish, state));
39
+ const write = withScriptOpts(program.command("write <file>"))
40
+ .description("Plan or apply an authoring document")
41
+ .option("--create", "Create the selected target")
42
+ .option("--replace", "Replace the selected target")
43
+ .option("--apply", "Apply the exact plan")
44
+ .option("--plan <digest>", "Exact plan digest to apply")
45
+ .addHelpText("after", "\nExample:\n scriptctl write scene.scriptctl --replace\n scriptctl write scene.scriptctl --replace --apply --plan <digest>\n")
46
+ .action(dispatch(commandWriteAuthoring, state));
47
+ describeArguments(write, ["Authoring source file"]);
48
+ const exportCommand = program.command("export")
49
+ .description("Export script content as an authoring document")
50
+ .action(() => exportCommand.outputHelp());
51
+ withScriptOpts(exportCommand.command("script"), "read")
52
+ .description("Export the complete script")
53
+ .requiredOption("-o, --output <file>", "Destination authoring file")
54
+ .action(dispatch((opts) => commandExportAuthoring("script", opts), state));
55
+ const descriptions = {
56
+ episodes: "Export selected episodes",
57
+ "episode-spans": "Export an inclusive episode span",
58
+ scenes: "Export selected scenes",
59
+ "scene-spans": "Export an inclusive scene span",
60
+ "action-spans": "Export an inclusive action span",
61
+ };
62
+ for (const kind of Object.keys(descriptions)) {
63
+ withScriptOpts(exportCommand.command(kind), "read")
64
+ .description(descriptions[kind])
65
+ .requiredOption("-i, --in <selector>", "Address or inclusive range to export")
66
+ .requiredOption("-o, --output <file>", "Destination authoring file")
67
+ .addHelpText("after", `\nExample:\n scriptctl export ${kind} --in <selector> --output export.scriptctl\n`)
68
+ .action(dispatch((opts) => commandExportAuthoring(kind, opts), state));
69
+ }
70
+ }
71
+ //# sourceMappingURL=register-workflows.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-workflows.js","sourceRoot":"","sources":["../../src/cli/register-workflows.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { Command } from "commander";
2
+ import { type CommandOutput } from "../common.js";
3
+ export type Handler = (opts: Record<string, unknown>) => Promise<[CommandOutput, number]> | [CommandOutput, number];
4
+ export interface RunState {
5
+ jsonMode: boolean;
6
+ exitCode: number;
7
+ format?: string;
8
+ }
9
+ export declare function dispatch(handler: Handler, state: RunState): (...args: unknown[]) => Promise<void>;
10
+ export declare function describeArguments(command: Command, descriptions: readonly string[]): Command;
11
+ export declare function withScriptOpts(command: Command, access?: "read" | "write"): Command;
12
+ export declare function withWorkingCopyOpts(command: Command): Command;
13
+ export declare function withSelection(command: Command): Command;
14
+ export declare const appendString: (value: string, previous: string[]) => string[];