@wrongstack/sdd 0.295.1 → 0.296.3

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.
@@ -1,11 +1,23 @@
1
1
  import type { TaskNode, TaskResult } from '@wrongstack/core/types';
2
2
  export interface CommandVerifierOptions {
3
- /** Metadata key holding the shell command to run. Default 'verificationCommand'. */
3
+ /** Metadata key holding the verification command. Default 'verificationCommand'. */
4
4
  metadataKey?: string;
5
5
  /** Kill + fail the verification after this many ms. Default 180_000 (3 min). */
6
6
  timeoutMs?: number;
7
7
  }
8
- export declare function verificationShell(platform: NodeJS.Platform): [shell: string, ...args: string[]];
8
+ /**
9
+ * Tokenize a command string into an argv array **without** shell interpolation.
10
+ *
11
+ * Splits on whitespace while respecting single and double quotes (matching
12
+ * POSIX shell quoting rules for the common cases). Shell metacharacters
13
+ * (`;`, `|`, `&&`, `$()`, backticks, `>`, `<`) that appear *inside* a token
14
+ * are preserved as literal characters — they are passed to the executable as
15
+ * argument data, never interpreted by a shell.
16
+ *
17
+ * Returns `undefined` when the input is empty/whitespace or contains
18
+ * unbalanced quotes (which would indicate a malformed command).
19
+ */
20
+ export declare function tokenizeCommand(command: string): string[] | undefined;
9
21
  /** Shape shared by every SDD task verifier (matches SddParallelRunOptions.verifyTask). */
10
22
  export type SddVerifyTask = (info: {
11
23
  task: TaskNode;
@@ -38,8 +50,13 @@ export declare function makeAcceptanceCriteriaVerifier(options: AcceptanceCriter
38
50
  /**
39
51
  * Build a `verifyTask` closure (shape matches {@link SddParallelRunOptions.verifyTask}).
40
52
  * Returns `{ ok: true }` immediately when the task carries no verification command,
41
- * otherwise spawns the command in `cwd` (shell, output discarded) and resolves
42
- * `{ ok: false, reason }` on non-zero exit, spawn error, or timeout.
53
+ * otherwise spawns the command in `cwd` as `executable + argv` with `shell: false`
54
+ * (no shell interpolation), and resolves `{ ok: false, reason }` on non-zero exit,
55
+ * spawn error, malformed command, or timeout.
56
+ *
57
+ * Defense-in-depth: even if the authorization gate on `set_task_verification`
58
+ * were bypassed, shell metacharacters (`;`, `|`, `&&`, `$()`, etc.) are tokenized
59
+ * into literal arguments rather than being interpreted by a shell.
43
60
  */
44
61
  export declare function makeCommandVerifier(options?: CommandVerifierOptions): (info: {
45
62
  task: TaskNode;
@@ -1 +1 @@
1
- {"version":3,"file":"verify-task.d.ts","sourceRoot":"","sources":["../src/verify-task.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEnE,MAAM,WAAW,sBAAsB;IACrC,oFAAoF;IACpF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gFAAgF;IAChF,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,CAAC,CAE/F;AAED,0FAA0F;AAC1F,MAAM,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE;IACjC,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,UAAU,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;CACb,KAAK,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAEhD;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,aAAa,EAAE,GAAG,aAAa,CAQ3E;AAED,MAAM,WAAW,iCAAiC;IAChD,8EAA8E;IAC9E,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACzC,4EAA4E;IAC5E,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;GAOG;AACH,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,iCAAiC,GACzC,aAAa,CAuCf;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,GAAE,sBAA2B,UAI/B;IACrC,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,UAAU,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;CACb,KAAG,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAuC9C"}
1
+ {"version":3,"file":"verify-task.d.ts","sourceRoot":"","sources":["../src/verify-task.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEnE,MAAM,WAAW,sBAAsB;IACrC,oFAAoF;IACpF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gFAAgF;IAChF,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CA+ErE;AAED,0FAA0F;AAC1F,MAAM,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE;IACjC,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,UAAU,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;CACb,KAAK,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAEhD;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,aAAa,EAAE,GAAG,aAAa,CAQ3E;AAED,MAAM,WAAW,iCAAiC;IAChD,8EAA8E;IAC9E,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACzC,4EAA4E;IAC5E,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;GAOG;AACH,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,iCAAiC,GACzC,aAAa,CAuCf;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,GAAE,sBAA2B,UAI/B;IACrC,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,UAAU,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;CACb,KAAG,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CA0C9C"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wrongstack/sdd",
3
- "version": "0.295.1",
3
+ "version": "0.296.3",
4
4
  "license": "MIT",
5
5
  "description": "WrongStack Spec-Driven Development engine — standalone package extracted from @wrongstack/core. Task graph generation, tracking, execution, lifecycle management, and AI-driven spec building for SDD workflows.",
6
6
  "repository": {
@@ -26,8 +26,8 @@
26
26
  "dist"
27
27
  ],
28
28
  "dependencies": {
29
- "@wrongstack/core": "0.295.1",
30
- "@wrongstack/kanban": "0.295.1"
29
+ "@wrongstack/core": "0.296.3",
30
+ "@wrongstack/kanban": "0.296.3"
31
31
  },
32
32
  "devDependencies": {
33
33
  "@types/node": "^26.1.1",