sortie-dogs 0.10.6 → 0.10.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE CHANGED
@@ -1,21 +1,21 @@
1
- MIT License
2
-
3
- Copyright (c) 2026 zufall-upon
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
1
+ MIT License
2
+
3
+ Copyright (c) 2026 zufall-upon
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -44,12 +44,12 @@ npm install --save-dev sortie-dogs
44
44
  npx sortie-dogs init .
45
45
  ```
46
46
 
47
- The beta package defaults to the v0.10 profile. Add the plugin and the required
47
+ The beta package defaults to the v0.10 profile. Add the OpenCode V2 plugin and the required
48
48
  two-level subagent depth to `.opencode/opencode.json`, preserving existing values:
49
49
 
50
50
  ```json
51
51
  {
52
- "plugin": ["sortie-dogs"],
52
+ "plugins": ["sortie-dogs"],
53
53
  "subagent_depth": 2
54
54
  }
55
55
  ```
@@ -64,7 +64,7 @@ Selecting `dog-operator` directly starts the same workflow. `dog-operator` is th
64
64
  only user-facing v0.10 authority. `dogs-coordinator` and every `*-v010` role are
65
65
  internal children and must not be selected as task entry points.
66
66
 
67
- `init` installs runtime assets; the `plugin` entry loads runtime enforcement and
67
+ `init` installs runtime assets; the `plugins` entry loads runtime enforcement and
68
68
  model routing. Both are required. A new session alone does not reload an updated
69
69
  plugin process, so restart OpenCode after installation or upgrade.
70
70
 
@@ -206,7 +206,6 @@ Example `.opencode/sortie-dogs-v010.json`:
206
206
  },
207
207
  "continuation": {
208
208
  "enabled": true,
209
- "maxAutoContinues": 10,
210
209
  "taskWatchdogMilliseconds": 300000
211
210
  }
212
211
  }
@@ -233,7 +232,8 @@ not invent, probe, or translate variant names.
233
232
  default `1` and `maxArtifactBytes` default/maximum `30720`. Unavailable review
234
233
  blocks only when review is required.
235
234
  - `continuation.enabled`: default `true`.
236
- - `continuation.maxAutoContinues`: positive integer, default and maximum `10`.
235
+ - Automatic continuation has no turn-count ceiling. The legacy positive-integer
236
+ `continuation.maxAutoContinues` setting is accepted but ignored.
237
237
  - `continuation.taskWatchdogMilliseconds`: root inactivity while an implementation
238
238
  Task is outstanding; default `300000`, valid range `10..1800000`.
239
239
  - `continuation.summarizeModel`: optional explicit compaction model; omission
@@ -3,5 +3,5 @@
3
3
  * installed project marker without importing every asset body.
4
4
  */
5
5
  export declare const RUNTIME_ASSET_VERSION = "0.3.89-completion-proof-v1";
6
- export declare const V010_RUNTIME_ASSET_VERSION = "0.10.0-v0912-language4-cost-rpt10-compaction-ref2-proposal1-review-remediation1-surface4-proposal-recovery2-quality1-terminal2-route1-path1-permission2-prerequisite1";
6
+ export declare const V010_RUNTIME_ASSET_VERSION = "0.10.0-v0912-language4-cost-rpt10-compaction-ref2-proposal1-review-remediation1-surface4-proposal-recovery2-quality1-terminal2-route1-path1-permission2-prerequisite1-v2-bridge1-intent1";
7
7
  export type RuntimeAssetVersion = typeof RUNTIME_ASSET_VERSION | typeof V010_RUNTIME_ASSET_VERSION;
@@ -3,4 +3,4 @@
3
3
  * installed project marker without importing every asset body.
4
4
  */
5
5
  export const RUNTIME_ASSET_VERSION = "0.3.89-completion-proof-v1";
6
- export const V010_RUNTIME_ASSET_VERSION = "0.10.0-v0912-language4-cost-rpt10-compaction-ref2-proposal1-review-remediation1-surface4-proposal-recovery2-quality1-terminal2-route1-path1-permission2-prerequisite1";
6
+ export const V010_RUNTIME_ASSET_VERSION = "0.10.0-v0912-language4-cost-rpt10-compaction-ref2-proposal1-review-remediation1-surface4-proposal-recovery2-quality1-terminal2-route1-path1-permission2-prerequisite1-v2-bridge1-intent1";
package/dist/cli/main.js CHANGED
@@ -24,13 +24,13 @@ const LIMITS = {
24
24
  pathCharacters: 512,
25
25
  jsonDepth: 32,
26
26
  };
27
- const USAGE = `Usage: sortie-dogs lint <handoff.json> [<handoff.json> ...]
28
- [--manifest <operation-manifest.json>]
29
- [--changed-paths-from <file|->]
30
- [--changed-path <path> ...]
27
+ const USAGE = `Usage: sortie-dogs lint <handoff.json> [<handoff.json> ...]
28
+ [--manifest <operation-manifest.json>]
29
+ [--changed-paths-from <file|->]
30
+ [--changed-path <path> ...]
31
31
  [--format text|json] [--quiet] [--strict]`;
32
- const INIT_USAGE = `Usage: sortie-dogs init [project-root] [--profile stable|v010]
33
- sortie-dogs init --global [--profile stable|v010]
32
+ const INIT_USAGE = `Usage: sortie-dogs init [project-root] [--profile stable|v010]
33
+ sortie-dogs init --global [--profile stable|v010]
34
34
  This beta package defaults to the v010 profile.`;
35
35
  class InputFailure extends Error {
36
36
  safeMessage;
@@ -23,38 +23,38 @@ export function goalDeclarationDefaults(object) {
23
23
  ? object.defaults : {};
24
24
  return { ...normalizedCriterionFields(object), ...normalizedCriterionFields(defaults) };
25
25
  }
26
- export const GOAL_DECLARATION_FORMAT = `Declare a goal once, then reference it with goal_declaration_path in the Task prompt.
27
- The referenced JSON may contain shared defaults and a criteria array; the host expands them privately.
28
- An inline ext["sortie-dogs/goal-declaration"] in the registered handoff is also supported.
29
- Existing accepted goals need no repeated declaration; budget-only revisions retain their criteria.
30
- Legacy flat goal_* fields remain supported. No need to rewrite unrelated files or repeat common fields for each criterion.
31
- delivery_intent must be exactly one of: ${GOAL_DELIVERY_INTENTS.join(" | ")}. Never use prose or a boolean.
32
- delivery_mode is a separate optional enum: ${GOAL_DELIVERY_MODES.join(" | ")}.
33
- Use flat key: value lines. Each criterion begins with its own goal_criterion_id: line.
34
- For legacy flat input each criterion has a goal_criterion_id line. Prefer shared JSON defaults for multiple criteria.
35
- Replace every placeholder with the accepted task's actual value; preserve its acceptance and validation:
36
- goal_acceptance_fingerprint: <sha256: followed by exactly 64 lowercase hexadecimal characters>
37
- delivery_intent: implementation
38
- delivery_mode: mvp-first
39
- usable_path_established: false
40
- controlled_change: false
41
- goal_budget_units: <accepted positive integer>
42
- goal_criterion_id: <stable criterion id>
43
- goal_target: <requested behavior>
44
- goal_entrypoint: <real entrypoint>
45
- goal_workload: <requested workload>
46
- goal_oracle_coverage: ["<actual oracle>"]
47
- goal_build_boundary: <included | excluded | not-applicable>
48
- goal_source: <fixed source label>
49
- goal_candidate: <fixed candidate label>
50
- goal_source_binding: current-protected
51
- goal_candidate_binding: current-protected
52
- goal_fixture: <actual fixture identity>
53
- goal_proof_scope: requested-full
54
- goal_expected_outcome: pass
55
- goal_validation_command: <exact operation manifest validation command>
56
- The example's implementation/mvp-first selections apply only to an implementation without its usable path;
57
- select other enum values only from the accepted request. A declaration rejection launches no child.
26
+ export const GOAL_DECLARATION_FORMAT = `Declare a goal once, then reference it with goal_declaration_path in the Task prompt.
27
+ The referenced JSON may contain shared defaults and a criteria array; the host expands them privately.
28
+ An inline ext["sortie-dogs/goal-declaration"] in the registered handoff is also supported.
29
+ Existing accepted goals need no repeated declaration; budget-only revisions retain their criteria.
30
+ Legacy flat goal_* fields remain supported. No need to rewrite unrelated files or repeat common fields for each criterion.
31
+ delivery_intent must be exactly one of: ${GOAL_DELIVERY_INTENTS.join(" | ")}. Never use prose or a boolean.
32
+ delivery_mode is a separate optional enum: ${GOAL_DELIVERY_MODES.join(" | ")}.
33
+ Use flat key: value lines. Each criterion begins with its own goal_criterion_id: line.
34
+ For legacy flat input each criterion has a goal_criterion_id line. Prefer shared JSON defaults for multiple criteria.
35
+ Replace every placeholder with the accepted task's actual value; preserve its acceptance and validation:
36
+ goal_acceptance_fingerprint: <sha256: followed by exactly 64 lowercase hexadecimal characters>
37
+ delivery_intent: implementation
38
+ delivery_mode: mvp-first
39
+ usable_path_established: false
40
+ controlled_change: false
41
+ goal_budget_units: <accepted positive integer>
42
+ goal_criterion_id: <stable criterion id>
43
+ goal_target: <requested behavior>
44
+ goal_entrypoint: <real entrypoint>
45
+ goal_workload: <requested workload>
46
+ goal_oracle_coverage: ["<actual oracle>"]
47
+ goal_build_boundary: <included | excluded | not-applicable>
48
+ goal_source: <fixed source label>
49
+ goal_candidate: <fixed candidate label>
50
+ goal_source_binding: current-protected
51
+ goal_candidate_binding: current-protected
52
+ goal_fixture: <actual fixture identity>
53
+ goal_proof_scope: requested-full
54
+ goal_expected_outcome: pass
55
+ goal_validation_command: <exact operation manifest validation command>
56
+ The example's implementation/mvp-first selections apply only to an implementation without its usable path;
57
+ select other enum values only from the accepted request. A declaration rejection launches no child.
58
58
  Repair the Task prompt's named fields, not unrelated files; retry only with the corrected declaration.`;
59
59
  /** Normalize a shared declaration without guessing acceptance, coverage, delivery, or validation. */
60
60
  export function expandGoalDeclaration(value) {