opencode-ship 1.1.1 → 1.1.2-rc.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.
- package/CHANGELOG.md +49 -0
- package/THIRD_PARTY_NOTICES.md +1 -1
- package/dist/cli.js +379 -165
- package/dist/core.js +1 -1
- package/dist/plugin.js +1136 -109
- package/package.json +1 -1
- package/schema/ship-lock.schema.json +7 -18
- package/tests/plugin/expected-tools.mjs +13 -5
- package/tests/plugin/plugin-load.test.mjs +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "opencode-ship",
|
|
3
|
-
"version": "1.1.1",
|
|
3
|
+
"version": "1.1.2-rc.1",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "npm-distributed OpenCode installer that materializes the delivery plugin, reviewer/verifier agents, skills, ship config and lock into any consumer repository.",
|
|
6
6
|
"license": "MIT",
|
|
@@ -6,13 +6,13 @@
|
|
|
6
6
|
"required": ["contractVersion", "manager", "files", "integrity"],
|
|
7
7
|
"additionalProperties": false,
|
|
8
8
|
"properties": {
|
|
9
|
-
"contractVersion": { "enum": [1, 2, 3] },
|
|
9
|
+
"contractVersion": { "enum": [1, 2, 3, 4] },
|
|
10
10
|
"manager": {
|
|
11
11
|
"type": "object",
|
|
12
12
|
"required": ["schemaVersion", "name", "version", "appliedAt", "config"],
|
|
13
13
|
"additionalProperties": false,
|
|
14
14
|
"properties": {
|
|
15
|
-
"schemaVersion": { "enum": [1, 2, 3] },
|
|
15
|
+
"schemaVersion": { "enum": [1, 2, 3, 4] },
|
|
16
16
|
"name": { "type": "string", "pattern": "^opencode-ship$" },
|
|
17
17
|
"version": { "type": "string", "minLength": 1 },
|
|
18
18
|
"templateSet": { "type": "string", "minLength": 1 },
|
|
@@ -21,6 +21,10 @@
|
|
|
21
21
|
"description": "Profile the lock was applied under. Required on locks written at schema 2; absent on legacy schema-1 locks (resolved to core by the profile precedence layer)."
|
|
22
22
|
},
|
|
23
23
|
"appliedAt": { "type": "string", "format": "date-time" },
|
|
24
|
+
"setupComplete": {
|
|
25
|
+
"type": "boolean",
|
|
26
|
+
"description": "True when the consumer has finished the chat-only setup workflow. Sole writer is the opencode-ship setup-complete command."
|
|
27
|
+
},
|
|
24
28
|
"config": {
|
|
25
29
|
"type": "object",
|
|
26
30
|
"required": ["path", "sha256"],
|
|
@@ -79,7 +83,7 @@
|
|
|
79
83
|
"sha256": { "type": "string", "pattern": "^[0-9a-f]{64}$" },
|
|
80
84
|
"mode": { "type": "integer", "minimum": 0, "maximum": 511 },
|
|
81
85
|
"template": { "type": "string", "minLength": 1 },
|
|
82
|
-
"kind": { "enum": ["plugin", "agent", "skill", "config", "lock"] }
|
|
86
|
+
"kind": { "enum": ["plugin", "agent", "skill", "config", "lock", "support"] }
|
|
83
87
|
}
|
|
84
88
|
}
|
|
85
89
|
},
|
|
@@ -98,21 +102,6 @@
|
|
|
98
102
|
"opencodeMin": { "type": "string" },
|
|
99
103
|
"coreVersion": { "type": "string" }
|
|
100
104
|
}
|
|
101
|
-
},
|
|
102
|
-
"cleanupPending": {
|
|
103
|
-
"type": "array",
|
|
104
|
-
"description": "Tasks whose immediate post-merge cleanup could not complete; retry on next delivery task or plugin startup.",
|
|
105
|
-
"items": {
|
|
106
|
-
"type": "object",
|
|
107
|
-
"required": ["taskId", "failedAt", "stage", "reason"],
|
|
108
|
-
"additionalProperties": false,
|
|
109
|
-
"properties": {
|
|
110
|
-
"taskId": { "type": "string" },
|
|
111
|
-
"failedAt": { "type": "string", "format": "date-time" },
|
|
112
|
-
"stage": { "enum": ["preconditions", "worktree-remove", "branch-delete", "manifest-seal", "manifest-delete"] },
|
|
113
|
-
"reason": { "type": "string" }
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
105
|
}
|
|
117
106
|
}
|
|
118
107
|
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/*
|
|
2
2
|
* Canonical opencode-ship tool set.
|
|
3
3
|
*
|
|
4
|
-
* The bundled plugin registers exactly
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* The bundled plugin registers exactly 32 typed tools (16
|
|
5
|
+
* delivery + 4 control-plane + 12 ship). This module is the
|
|
6
|
+
* single source of truth for the expected set so:
|
|
7
7
|
*
|
|
8
8
|
* - the in-process plugin-load test asserts the contract at the
|
|
9
9
|
* plugin boundary;
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
*/
|
|
18
18
|
|
|
19
19
|
export const EXPECTED_OPENCODE_SHIP_TOOLS = Object.freeze([
|
|
20
|
-
//
|
|
20
|
+
// 16 delivery tools
|
|
21
21
|
"delivery_cleanup",
|
|
22
22
|
"delivery_github_read",
|
|
23
23
|
"delivery_inspect",
|
|
@@ -34,15 +34,23 @@ export const EXPECTED_OPENCODE_SHIP_TOOLS = Object.freeze([
|
|
|
34
34
|
"delivery_sync",
|
|
35
35
|
"delivery_verify",
|
|
36
36
|
"delivery_worktree",
|
|
37
|
-
//
|
|
37
|
+
// 12 ship tools
|
|
38
|
+
"ship_final_review",
|
|
38
39
|
"ship_plan_approve",
|
|
39
40
|
"ship_plan_start",
|
|
40
41
|
"ship_plan_submit",
|
|
41
42
|
"ship_resume",
|
|
42
43
|
"ship_run_start",
|
|
44
|
+
"ship_skill_audit",
|
|
45
|
+
"ship_skill_discover",
|
|
46
|
+
"ship_skill_install",
|
|
47
|
+
"ship_skill_uninstall",
|
|
43
48
|
"ship_status",
|
|
49
|
+
"ship_task_commit",
|
|
50
|
+
"ship_task_complete",
|
|
44
51
|
"ship_task_report",
|
|
45
52
|
"ship_task_review",
|
|
53
|
+
"ship_task_start",
|
|
46
54
|
]);
|
|
47
55
|
|
|
48
56
|
/**
|
|
@@ -29,7 +29,7 @@ test("plugin: default export is a function", async () => {
|
|
|
29
29
|
assert.equal(typeof mod.ShipPlugin, "function");
|
|
30
30
|
});
|
|
31
31
|
|
|
32
|
-
test("plugin: registers exactly
|
|
32
|
+
test("plugin: registers exactly 32 tools", async () => {
|
|
33
33
|
const mod = await import(pluginPath);
|
|
34
34
|
const fakeCtx = {
|
|
35
35
|
worktree: process.cwd(),
|