@uchibeke/gallivant 0.0.0-stage → 0.2.0
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/CONTRIBUTING.md +26 -0
- package/LICENSE +204 -0
- package/README.md +201 -2
- package/SECURITY.md +19 -0
- package/bin/gallivant.mjs +257 -0
- package/bin/package-plugin.mjs +16 -0
- package/bin/release-live.mjs +29 -0
- package/bin/release-package.mjs +23 -0
- package/bin/session-runtime.mjs +13 -0
- package/bin/task-delivery-state.mjs +12 -0
- package/docs/README.md +70 -0
- package/docs/agent-setup.md +214 -0
- package/docs/app.md +111 -0
- package/docs/architecture.md +265 -0
- package/docs/chains.md +102 -0
- package/docs/codex-cloud.md +284 -0
- package/docs/commands.md +620 -0
- package/docs/config.md +430 -0
- package/docs/execution.md +796 -0
- package/docs/guardrails.md +311 -0
- package/docs/install.md +338 -0
- package/docs/launch.md +42 -0
- package/docs/learning.md +369 -0
- package/docs/network-recovery.md +101 -0
- package/docs/openai-agents.md +457 -0
- package/docs/prd.md +246 -0
- package/docs/preparation.md +110 -0
- package/docs/release-qualification.md +196 -0
- package/docs/releasing.md +140 -0
- package/docs/runtime-environment.md +113 -0
- package/docs/task-delivery.md +476 -0
- package/docs/tasks.md +739 -0
- package/lib/aport.mjs +95 -0
- package/lib/attribution.mjs +95 -0
- package/lib/block.mjs +89 -0
- package/lib/capabilities.mjs +3 -0
- package/lib/chains.mjs +222 -0
- package/lib/codex_cloud.mjs +160 -0
- package/lib/codex_cloud_config.mjs +20 -0
- package/lib/codex_cloud_input.mjs +49 -0
- package/lib/codex_cloud_result.mjs +74 -0
- package/lib/commands/doctor.mjs +457 -0
- package/lib/commands/init.mjs +34 -0
- package/lib/commands/learn.mjs +54 -0
- package/lib/commands/new.mjs +47 -0
- package/lib/commands/ready.mjs +45 -0
- package/lib/commands/register.mjs +195 -0
- package/lib/commands/resume.mjs +224 -0
- package/lib/commands/serve.mjs +349 -0
- package/lib/commands/start.mjs +247 -0
- package/lib/commands/start_services.mjs +22 -0
- package/lib/commands/status.mjs +150 -0
- package/lib/commands/task.mjs +73 -0
- package/lib/commands/up.mjs +228 -0
- package/lib/commands/why.mjs +143 -0
- package/lib/config.mjs +461 -0
- package/lib/context.mjs +100 -0
- package/lib/control.mjs +202 -0
- package/lib/control_contract.mjs +16 -0
- package/lib/coordinator.mjs +19 -0
- package/lib/credential.mjs +161 -0
- package/lib/daemon.mjs +156 -0
- package/lib/deliverable.mjs +357 -0
- package/lib/events.mjs +261 -0
- package/lib/executable.mjs +31 -0
- package/lib/execution.mjs +631 -0
- package/lib/execution_contract.mjs +15 -0
- package/lib/execution_input.mjs +4 -0
- package/lib/execution_io.mjs +94 -0
- package/lib/execution_journal.mjs +69 -0
- package/lib/execution_preparation.mjs +29 -0
- package/lib/execution_result.mjs +266 -0
- package/lib/fs.mjs +133 -0
- package/lib/gh.mjs +289 -0
- package/lib/git.mjs +434 -0
- package/lib/harness.mjs +521 -0
- package/lib/harness_log.mjs +432 -0
- package/lib/hash.mjs +16 -0
- package/lib/identity.mjs +98 -0
- package/lib/learning.mjs +654 -0
- package/lib/learning_contract.mjs +2 -0
- package/lib/learning_data.mjs +135 -0
- package/lib/learning_input.mjs +111 -0
- package/lib/learning_qualification.mjs +67 -0
- package/lib/learning_signer.mjs +151 -0
- package/lib/learning_store.mjs +88 -0
- package/lib/log.mjs +53 -0
- package/lib/network_diagnostics.mjs +64 -0
- package/lib/network_recovery.mjs +42 -0
- package/lib/notify.mjs +58 -0
- package/lib/openai_agents.mjs +373 -0
- package/lib/openai_agents_config.mjs +14 -0
- package/lib/openai_agents_http.mjs +87 -0
- package/lib/openai_agents_input.mjs +15 -0
- package/lib/openai_agents_sources.mjs +112 -0
- package/lib/owner_delivery.mjs +443 -0
- package/lib/plugin_package.mjs +340 -0
- package/lib/prd.mjs +635 -0
- package/lib/preparation_agents.mjs +33 -0
- package/lib/preparation_codex.mjs +212 -0
- package/lib/probe.mjs +126 -0
- package/lib/prompt.mjs +238 -0
- package/lib/provider_health.mjs +55 -0
- package/lib/public-format.mjs +31 -0
- package/lib/public_output.mjs +49 -0
- package/lib/release_package.mjs +154 -0
- package/lib/repository_files.mjs +86 -0
- package/lib/run.mjs +385 -0
- package/lib/run_log.mjs +94 -0
- package/lib/runtime-environment.mjs +87 -0
- package/lib/runtime_dependencies.mjs +15 -0
- package/lib/runtime_node.mjs +107 -0
- package/lib/runtime_state.mjs +174 -0
- package/lib/sources/index.mjs +27 -0
- package/lib/sources/prd.mjs +50 -0
- package/lib/start_contract.mjs +37 -0
- package/lib/state.mjs +246 -0
- package/lib/task_allowance.mjs +31 -0
- package/lib/task_completion.mjs +61 -0
- package/lib/task_contract.mjs +450 -0
- package/lib/task_delivery.mjs +219 -0
- package/lib/task_delivery_cancel.mjs +34 -0
- package/lib/task_delivery_contract.mjs +61 -0
- package/lib/task_delivery_mcp.mjs +40 -0
- package/lib/task_delivery_store.mjs +43 -0
- package/lib/task_delivery_view.mjs +88 -0
- package/lib/task_environment.mjs +281 -0
- package/lib/task_prepare.mjs +224 -0
- package/lib/task_store.mjs +38 -0
- package/lib/tasks.mjs +513 -0
- package/lib/tick.mjs +1635 -0
- package/lib/time.mjs +36 -0
- package/lib/tracker/assets.mjs +43 -0
- package/lib/tracker/pages.mjs +320 -0
- package/lib/tracker/runs.mjs +102 -0
- package/lib/tracker/stream.mjs +74 -0
- package/lib/tracker_process.mjs +107 -0
- package/lib/verification_sandbox.mjs +181 -0
- package/node_modules/smol-toml/LICENSE +24 -0
- package/node_modules/smol-toml/README.md +605 -0
- package/node_modules/smol-toml/dist/date.d.ts +41 -0
- package/node_modules/smol-toml/dist/date.js +156 -0
- package/node_modules/smol-toml/dist/error.d.ts +37 -0
- package/node_modules/smol-toml/dist/error.js +67 -0
- package/node_modules/smol-toml/dist/extract.js +289 -0
- package/node_modules/smol-toml/dist/index.cjs +770 -0
- package/node_modules/smol-toml/dist/index.d.ts +44 -0
- package/node_modules/smol-toml/dist/index.js +34 -0
- package/node_modules/smol-toml/dist/parse.d.ts +73 -0
- package/node_modules/smol-toml/dist/parse.js +164 -0
- package/node_modules/smol-toml/dist/primitive.js +151 -0
- package/node_modules/smol-toml/dist/stringify.d.ts +32 -0
- package/node_modules/smol-toml/dist/stringify.js +219 -0
- package/node_modules/smol-toml/dist/struct.js +156 -0
- package/node_modules/smol-toml/dist/util.d.ts +43 -0
- package/node_modules/smol-toml/dist/util.js +57 -0
- package/node_modules/smol-toml/package.json +68 -0
- package/npm-shrinkwrap.json +1823 -0
- package/package.json +105 -4
- package/templates/claude-settings.json +18 -0
- package/templates/passport.gallivant.json +83 -0
- package/templates/plugin/bundled-runtime.json +26 -0
- package/templates/plugin/schemas/mcp.schema.json +120 -0
- package/templates/plugin/schemas/plugin.schema.json +65 -0
- package/templates/plugin/task-delivery.SKILL.md +60 -0
- package/templates/prd.md +32 -0
- package/templates/tracker/tracker.css +301 -0
- package/templates/tracker/tracker.js +721 -0
package/package.json
CHANGED
|
@@ -1,6 +1,107 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@uchibeke/gallivant",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
|
|
3
|
+
"version": "0.2.0",
|
|
4
|
+
"description": "Turn repository tasks into reviewed pull requests with local or hosted agents, acceptance checks and a persistent review loop.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"bin": {
|
|
7
|
+
"gallivant": "bin/gallivant.mjs",
|
|
8
|
+
"task-delivery-package": "bin/package-plugin.mjs",
|
|
9
|
+
"task-delivery-state": "bin/task-delivery-state.mjs"
|
|
10
|
+
},
|
|
11
|
+
"exports": {
|
|
12
|
+
".": "./lib/tasks.mjs",
|
|
13
|
+
"./tasks": "./lib/tasks.mjs",
|
|
14
|
+
"./context": "./lib/context.mjs",
|
|
15
|
+
"./execution": "./lib/execution.mjs",
|
|
16
|
+
"./execution-result": "./lib/execution_result.mjs",
|
|
17
|
+
"./capabilities": "./lib/capabilities.mjs",
|
|
18
|
+
"./task-delivery": "./lib/task_delivery.mjs",
|
|
19
|
+
"./task-delivery/contracts": "./lib/task_delivery_contract.mjs",
|
|
20
|
+
"./task-delivery/views": "./lib/task_delivery_view.mjs",
|
|
21
|
+
"./task-delivery/store": "./lib/task_delivery_store.mjs",
|
|
22
|
+
"./task-delivery/mcp": "./lib/task_delivery_mcp.mjs",
|
|
23
|
+
"./runtime/coordinator": "./lib/coordinator.mjs",
|
|
24
|
+
"./runtime/node": "./lib/runtime_node.mjs",
|
|
25
|
+
"./runtime/state": "./lib/runtime_state.mjs",
|
|
26
|
+
"./providers/openai-agents": "./lib/openai_agents.mjs",
|
|
27
|
+
"./providers/codex-cloud": "./lib/codex_cloud.mjs",
|
|
28
|
+
"./plugin-package": "./lib/plugin_package.mjs",
|
|
29
|
+
"./lib/*": "./lib/*",
|
|
30
|
+
"./package.json": "./package.json",
|
|
31
|
+
"./runtime/node/dependencies": "./lib/runtime_dependencies.mjs"
|
|
32
|
+
},
|
|
33
|
+
"files": [
|
|
34
|
+
"bin",
|
|
35
|
+
"lib",
|
|
36
|
+
"templates",
|
|
37
|
+
"README.md",
|
|
38
|
+
"LICENSE",
|
|
39
|
+
"CONTRIBUTING.md",
|
|
40
|
+
"SECURITY.md",
|
|
41
|
+
"docs/*.md",
|
|
42
|
+
"npm-shrinkwrap.json"
|
|
43
|
+
],
|
|
44
|
+
"engines": {
|
|
45
|
+
"node": ">=22"
|
|
46
|
+
},
|
|
47
|
+
"publishConfig": {
|
|
48
|
+
"access": "public",
|
|
49
|
+
"registry": "https://registry.npmjs.org"
|
|
50
|
+
},
|
|
51
|
+
"scripts": {
|
|
52
|
+
"test": "node --test test/*.test.mjs",
|
|
53
|
+
"test:install": "node test/install-package.mjs",
|
|
54
|
+
"test:learning": "node --test test/learning.test.mjs test/learning-openssh.test.mjs test/learning-dispatch.test.mjs",
|
|
55
|
+
"test:learning:live": "node test/learning-live.mjs",
|
|
56
|
+
"test:execution-backends": "node --test test/execution-backends.test.mjs test/execution-preparation.test.mjs test/probe.test.mjs test/chains.test.mjs test/loop.test.mjs test/recovery.test.mjs test/review.test.mjs test/control.test.mjs test/tracker_controls.test.mjs test/tracker.test.mjs test/public_format.test.mjs test/public_output.test.mjs",
|
|
57
|
+
"test:openai-agents": "node --test test/openai-agents.test.mjs",
|
|
58
|
+
"test:openai-agents:live": "node test/openai-agents-live.mjs",
|
|
59
|
+
"test:openai-agents:preparation:live": "node test/openai-agents-preparation-live.mjs",
|
|
60
|
+
"test:codex-cloud": "node --test test/codex-cloud.test.mjs && node --test --test-name-pattern='codex-cloud|result publication validates|verified publication recovery|failed remote verification|deterministic publication rejection|interrupted verification' test/execution-backends.test.mjs",
|
|
61
|
+
"test:codex-cloud:live": "node test/codex-cloud-live.mjs",
|
|
62
|
+
"test:task-intake": "node --test test/task-intake.test.mjs",
|
|
63
|
+
"test:live-harnesses": "node test/live-harnesses.mjs",
|
|
64
|
+
"test:plugin-package": "node test/plugin-package.mjs",
|
|
65
|
+
"package:plugin": "node bin/package-plugin.mjs",
|
|
66
|
+
"lint": "node --check bin/release-package.mjs && node --check bin/release-live.mjs && node --check bin/gallivant.mjs && node --check bin/package-plugin.mjs && node --check bin/task-delivery-state.mjs && for f in lib/*.mjs lib/*/*.mjs; do node --check \"$f\" || exit 1; done",
|
|
67
|
+
"test:release-package": "node --test test/release-package.test.mjs",
|
|
68
|
+
"release:preflight": "node bin/release-package.mjs --mode preflight",
|
|
69
|
+
"release:package": "node bin/release-package.mjs --mode build",
|
|
70
|
+
"release:validate": "node bin/release-package.mjs --mode validate",
|
|
71
|
+
"test:release:live": "node bin/release-live.mjs",
|
|
72
|
+
"test:release:host": "node bin/release-live.mjs --host"
|
|
73
|
+
},
|
|
74
|
+
"keywords": [
|
|
75
|
+
"claude-code",
|
|
76
|
+
"codex",
|
|
77
|
+
"pull-request",
|
|
78
|
+
"autonomous",
|
|
79
|
+
"agent",
|
|
80
|
+
"aport"
|
|
81
|
+
],
|
|
82
|
+
"license": "Apache-2.0",
|
|
83
|
+
"repository": {
|
|
84
|
+
"type": "git",
|
|
85
|
+
"url": "https://github.com/uchibeke/gallivant.git"
|
|
86
|
+
},
|
|
87
|
+
"dependencies": {
|
|
88
|
+
"ajv": "8.20.0",
|
|
89
|
+
"pngjs": "7.0.0",
|
|
90
|
+
"smol-toml": "1.9.0"
|
|
91
|
+
},
|
|
92
|
+
"peerDependencies": {
|
|
93
|
+
"@modelcontextprotocol/sdk": "1.32.1"
|
|
94
|
+
},
|
|
95
|
+
"peerDependenciesMeta": {
|
|
96
|
+
"@modelcontextprotocol/sdk": {
|
|
97
|
+
"optional": true
|
|
98
|
+
}
|
|
99
|
+
},
|
|
100
|
+
"devDependencies": {
|
|
101
|
+
"@modelcontextprotocol/sdk": "1.32.1",
|
|
102
|
+
"esbuild": "0.28.2"
|
|
103
|
+
},
|
|
104
|
+
"bundledDependencies": [
|
|
105
|
+
"smol-toml"
|
|
106
|
+
]
|
|
107
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"_comment": "Merge the sandbox block into ~/.gallivant/claude/settings.json after the APort installer has written the hooks block there. On macOS, enableWeakerNetworkIsolation permits Apple's trustd.agent so gh can verify TLS certificates; it opens a potential exfiltration route through that service. It has no effect on Linux. See docs/guardrails.md. Keep this in operator-owned settings, never project settings.",
|
|
3
|
+
"sandbox": {
|
|
4
|
+
"enabled": true,
|
|
5
|
+
"autoAllowBashIfSandboxed": true,
|
|
6
|
+
"enableWeakerNetworkIsolation": true,
|
|
7
|
+
"network": {
|
|
8
|
+
"allowedDomains": [
|
|
9
|
+
"github.com",
|
|
10
|
+
"api.github.com",
|
|
11
|
+
"*.githubusercontent.com",
|
|
12
|
+
"registry.npmjs.org",
|
|
13
|
+
"pypi.org",
|
|
14
|
+
"files.pythonhosted.org"
|
|
15
|
+
]
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
{
|
|
2
|
+
"passport_id": "00000000-0000-4000-8000-000000000000",
|
|
3
|
+
"kind": "template",
|
|
4
|
+
"spec_version": "oap/1.0",
|
|
5
|
+
"owner_id": "user_gallivant",
|
|
6
|
+
"owner_type": "user",
|
|
7
|
+
"assurance_level": "L2",
|
|
8
|
+
"status": "active",
|
|
9
|
+
"capabilities": [
|
|
10
|
+
{ "id": "data.file.read", "params": {} },
|
|
11
|
+
{ "id": "data.file.write", "params": {} },
|
|
12
|
+
{ "id": "system.command.execute", "params": {} },
|
|
13
|
+
{ "id": "web.fetch", "params": {} },
|
|
14
|
+
{ "id": "agent.session.create", "params": {} }
|
|
15
|
+
],
|
|
16
|
+
"limits": {
|
|
17
|
+
"data.file.write": {
|
|
18
|
+
"allowed_paths": ["{{worktrees}}/**"],
|
|
19
|
+
"blocked_paths": [
|
|
20
|
+
"{{home}}/.claude/**",
|
|
21
|
+
"{{home}}/.codex/**",
|
|
22
|
+
"{{home}}/.config/opencode/**",
|
|
23
|
+
"{{home}}/.gallivant/**",
|
|
24
|
+
"{{home}}/.aport/**",
|
|
25
|
+
"**/.env",
|
|
26
|
+
"**/.env.*"
|
|
27
|
+
]
|
|
28
|
+
},
|
|
29
|
+
"data.file.read": {
|
|
30
|
+
"blocked_patterns": [
|
|
31
|
+
"**/.env",
|
|
32
|
+
"**/.env.*",
|
|
33
|
+
"{{home}}/.claude/**",
|
|
34
|
+
"{{home}}/.codex/**",
|
|
35
|
+
"{{home}}/.config/opencode/**",
|
|
36
|
+
"{{home}}/.gallivant/**",
|
|
37
|
+
"{{home}}/.aport/**",
|
|
38
|
+
"{{home}}/.ssh/**",
|
|
39
|
+
"{{home}}/.aws/**",
|
|
40
|
+
"**/auth.json",
|
|
41
|
+
"**/*.pem",
|
|
42
|
+
"**/*.key"
|
|
43
|
+
]
|
|
44
|
+
},
|
|
45
|
+
"system.command.execute": {
|
|
46
|
+
"allowed_commands": ["*"],
|
|
47
|
+
"blocked_patterns": [
|
|
48
|
+
"push --force",
|
|
49
|
+
"push -f",
|
|
50
|
+
"--force-with-lease",
|
|
51
|
+
"push origin main",
|
|
52
|
+
"push origin master",
|
|
53
|
+
"HEAD:main",
|
|
54
|
+
"HEAD:master",
|
|
55
|
+
"--no-verify",
|
|
56
|
+
"sudo",
|
|
57
|
+
"rm -rf ~",
|
|
58
|
+
"rm -rf /",
|
|
59
|
+
"gh auth token",
|
|
60
|
+
"security find-",
|
|
61
|
+
"launchctl",
|
|
62
|
+
"printenv",
|
|
63
|
+
"auth.json"
|
|
64
|
+
],
|
|
65
|
+
"max_execution_time": 1800,
|
|
66
|
+
"require_confirmation": false
|
|
67
|
+
},
|
|
68
|
+
"web.fetch": {
|
|
69
|
+
"allowed_domains": [
|
|
70
|
+
"github.com",
|
|
71
|
+
"api.github.com",
|
|
72
|
+
"raw.githubusercontent.com",
|
|
73
|
+
"registry.npmjs.org",
|
|
74
|
+
"pypi.org",
|
|
75
|
+
"files.pythonhosted.org"
|
|
76
|
+
]
|
|
77
|
+
}
|
|
78
|
+
},
|
|
79
|
+
"regions": [],
|
|
80
|
+
"created_at": "2026-09-23T00:00:00Z",
|
|
81
|
+
"updated_at": "2026-09-23T00:00:00Z",
|
|
82
|
+
"version": "1.0.0"
|
|
83
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"package": "smol-toml",
|
|
3
|
+
"version": "1.9.0",
|
|
4
|
+
"integrity": "sha512-hpd+HLON7HdZXqYchMM/+LaTTbdK0AU3NngIJ4KVyWbY9bfQqdL9cD+4yf6dUoU2Ap4VsU0JkQi6FxAI1B2mXQ==",
|
|
5
|
+
"files": {
|
|
6
|
+
"node_modules/smol-toml/LICENSE": "fa5659948374d4f555594f47f6da073b40dc503e921aeeece30df4362b3051a5",
|
|
7
|
+
"node_modules/smol-toml/README.md": "bcaaa3befbd5bc5373cc6d80f4502afbe83179f96dcf9a336c43deb7ffa24c65",
|
|
8
|
+
"node_modules/smol-toml/dist/date.d.ts": "c7ad3531c131f2b5b246b2d208b75c5403475ad155b7661fa2d673104b806791",
|
|
9
|
+
"node_modules/smol-toml/dist/date.js": "ef924a2a42c7f16761e7098c3ed8e04195ecbcb02d5c369db0aee76f251a409c",
|
|
10
|
+
"node_modules/smol-toml/dist/error.d.ts": "02e33cdc5ca75f517f44b31070640be0fe6d0169dd91c266d02a1e2a71e064ac",
|
|
11
|
+
"node_modules/smol-toml/dist/error.js": "76f8e47f5fc57273748242d59570656d7c921a80bceb2291ca5a4d7a723e9f29",
|
|
12
|
+
"node_modules/smol-toml/dist/extract.js": "b964c8f39c737172295b31b9ee61b49e513ff12788e119ddfdbb68c448054c12",
|
|
13
|
+
"node_modules/smol-toml/dist/index.cjs": "09ce310a8bcc1bb5c7dc2813c88b4bfbbeb685e4c186a9631ff54da7e85c880f",
|
|
14
|
+
"node_modules/smol-toml/dist/index.d.ts": "b4556819c2ed0cd4016d05a6bfd7d4773c0b5ffb39c8ed547796ce4a1093d9b8",
|
|
15
|
+
"node_modules/smol-toml/dist/index.js": "dc8e0afc74477e514f5cb8492b587560c1d7d68cec03a994cc8bc4af99c8da2a",
|
|
16
|
+
"node_modules/smol-toml/dist/parse.d.ts": "2b230dc984b6e51b545bfe222f9965cc2ff434164ed9428bec415c5e508a9854",
|
|
17
|
+
"node_modules/smol-toml/dist/parse.js": "195e33ea068bf6f3acb5b3342792ac4aa954bba7e751519ba869c00da395ecdb",
|
|
18
|
+
"node_modules/smol-toml/dist/primitive.js": "be47fe90bf9a410af0b9204b6b34617f4b38e57f08198b10cb024a0272eb5936",
|
|
19
|
+
"node_modules/smol-toml/dist/stringify.d.ts": "628a6a55714fcf4a4eb0e59866ab1e5cc67c1b9e0cfc8524ccc8d6b5ee24ad7c",
|
|
20
|
+
"node_modules/smol-toml/dist/stringify.js": "c717d95456426dc8a0b07c9d03a4e434d5dea8254fca24e5fd93a22de3bcd44c",
|
|
21
|
+
"node_modules/smol-toml/dist/struct.js": "736742cfa645bbd08bc5396c5f7ddbea5c3b7ac5d61fe86031846f5769131deb",
|
|
22
|
+
"node_modules/smol-toml/dist/util.d.ts": "e6b1d3eecb240dc71d0dc28d1beee69cefd6ee014507c822909be0a7117517e0",
|
|
23
|
+
"node_modules/smol-toml/dist/util.js": "6327e40efd957128da15867c3a32293950a925570b457b1b78c735452cebc08e",
|
|
24
|
+
"node_modules/smol-toml/package.json": "0e35bde6992fef675058596ea0e94c2d3ca65e5f9b73a326d94208be6210f192"
|
|
25
|
+
}
|
|
26
|
+
}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://agent-plugins.org/schemas/1.0.0/mcp.schema.json",
|
|
4
|
+
"title": "Agent Plugins MCP Configuration",
|
|
5
|
+
"description": "Machine-readable schema for mcp.json in Agent Plugins 1.0.0. The Agent Plugins specification defines additional semantic and operational requirements.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"properties": {
|
|
8
|
+
"$schema": {
|
|
9
|
+
"const": "https://agent-plugins.org/schemas/1.0.0/mcp.schema.json",
|
|
10
|
+
"description": "Canonical identifier of the MCP configuration schema for the Agent Plugins version targeted by this document."
|
|
11
|
+
},
|
|
12
|
+
"mcpServers": {
|
|
13
|
+
"type": "object",
|
|
14
|
+
"additionalProperties": {
|
|
15
|
+
"$ref": "#/$defs/server"
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
"required": ["$schema", "mcpServers"],
|
|
20
|
+
"additionalProperties": false,
|
|
21
|
+
"$defs": {
|
|
22
|
+
"server": {
|
|
23
|
+
"title": "MCP server",
|
|
24
|
+
"oneOf": [
|
|
25
|
+
{
|
|
26
|
+
"$ref": "#/$defs/stdioServer"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"$ref": "#/$defs/streamableHttpServer"
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"$ref": "#/$defs/sseServer"
|
|
33
|
+
}
|
|
34
|
+
]
|
|
35
|
+
},
|
|
36
|
+
"stdioServer": {
|
|
37
|
+
"title": "stdio MCP server",
|
|
38
|
+
"type": "object",
|
|
39
|
+
"properties": {
|
|
40
|
+
"type": {
|
|
41
|
+
"const": "stdio"
|
|
42
|
+
},
|
|
43
|
+
"command": {
|
|
44
|
+
"type": "string",
|
|
45
|
+
"minLength": 1,
|
|
46
|
+
"description": "Executable token. Resolution rules are defined by the Agent Plugins specification."
|
|
47
|
+
},
|
|
48
|
+
"args": {
|
|
49
|
+
"type": "array",
|
|
50
|
+
"items": {
|
|
51
|
+
"type": "string"
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
"env": {
|
|
55
|
+
"type": "object",
|
|
56
|
+
"propertyNames": {
|
|
57
|
+
"not": {
|
|
58
|
+
"enum": ["PLUGIN_ROOT", "PLUGIN_DATA"]
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
"additionalProperties": {
|
|
62
|
+
"type": "string"
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
"cwd": {
|
|
66
|
+
"type": "string",
|
|
67
|
+
"pattern": "^(?:\\./|\\$\\{PLUGIN_ROOT\\}(?:/|$)|\\$\\{PLUGIN_DATA\\}(?:/|$))",
|
|
68
|
+
"description": "Plugin-relative, PLUGIN_ROOT-rooted, or PLUGIN_DATA-rooted working directory. Filesystem containment is validated separately."
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
"required": ["type", "command"],
|
|
72
|
+
"additionalProperties": false
|
|
73
|
+
},
|
|
74
|
+
"streamableHttpServer": {
|
|
75
|
+
"title": "Streamable HTTP MCP server",
|
|
76
|
+
"type": "object",
|
|
77
|
+
"properties": {
|
|
78
|
+
"type": {
|
|
79
|
+
"const": "streamable-http"
|
|
80
|
+
},
|
|
81
|
+
"url": {
|
|
82
|
+
"type": "string",
|
|
83
|
+
"minLength": 1,
|
|
84
|
+
"description": "MCP endpoint URL. URL semantics are defined by the Agent Plugins specification."
|
|
85
|
+
},
|
|
86
|
+
"headers": {
|
|
87
|
+
"$ref": "#/$defs/headers"
|
|
88
|
+
}
|
|
89
|
+
},
|
|
90
|
+
"required": ["type", "url"],
|
|
91
|
+
"additionalProperties": false
|
|
92
|
+
},
|
|
93
|
+
"sseServer": {
|
|
94
|
+
"title": "Legacy HTTP+SSE MCP server",
|
|
95
|
+
"type": "object",
|
|
96
|
+
"properties": {
|
|
97
|
+
"type": {
|
|
98
|
+
"const": "sse"
|
|
99
|
+
},
|
|
100
|
+
"url": {
|
|
101
|
+
"type": "string",
|
|
102
|
+
"minLength": 1,
|
|
103
|
+
"description": "MCP endpoint URL. URL semantics are defined by the Agent Plugins specification."
|
|
104
|
+
},
|
|
105
|
+
"headers": {
|
|
106
|
+
"$ref": "#/$defs/headers"
|
|
107
|
+
}
|
|
108
|
+
},
|
|
109
|
+
"required": ["type", "url"],
|
|
110
|
+
"additionalProperties": false
|
|
111
|
+
},
|
|
112
|
+
"headers": {
|
|
113
|
+
"title": "HTTP headers",
|
|
114
|
+
"type": "object",
|
|
115
|
+
"additionalProperties": {
|
|
116
|
+
"type": "string"
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
|
|
4
|
+
"title": "Agent Plugins Manifest",
|
|
5
|
+
"description": "Machine-readable schema for plugin.json in Agent Plugins 1.0.0. The Agent Plugins specification defines additional semantic and operational requirements.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"properties": {
|
|
8
|
+
"$schema": {
|
|
9
|
+
"const": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
|
|
10
|
+
"description": "Canonical identifier of the plugin manifest schema for the Agent Plugins version targeted by this document."
|
|
11
|
+
},
|
|
12
|
+
"name": {
|
|
13
|
+
"type": "string",
|
|
14
|
+
"minLength": 1,
|
|
15
|
+
"maxLength": 64,
|
|
16
|
+
"pattern": "^(?!.*(?:--|\\.\\.))[a-z0-9](?:[a-z0-9.-]*[a-z0-9])?$",
|
|
17
|
+
"description": "Human-readable plugin name."
|
|
18
|
+
},
|
|
19
|
+
"version": {
|
|
20
|
+
"type": "string"
|
|
21
|
+
},
|
|
22
|
+
"description": {
|
|
23
|
+
"type": "string"
|
|
24
|
+
},
|
|
25
|
+
"author": {
|
|
26
|
+
"type": "object",
|
|
27
|
+
"properties": {
|
|
28
|
+
"name": {
|
|
29
|
+
"type": "string"
|
|
30
|
+
},
|
|
31
|
+
"email": {
|
|
32
|
+
"type": "string"
|
|
33
|
+
},
|
|
34
|
+
"url": {
|
|
35
|
+
"type": "string"
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
"additionalProperties": false
|
|
39
|
+
},
|
|
40
|
+
"homepage": {
|
|
41
|
+
"type": "string"
|
|
42
|
+
},
|
|
43
|
+
"repository": {
|
|
44
|
+
"type": "string"
|
|
45
|
+
},
|
|
46
|
+
"license": {
|
|
47
|
+
"type": "string"
|
|
48
|
+
},
|
|
49
|
+
"keywords": {
|
|
50
|
+
"type": "array",
|
|
51
|
+
"items": {
|
|
52
|
+
"type": "string"
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
"extensions": {
|
|
56
|
+
"type": "object",
|
|
57
|
+
"description": "Client-specific manifest data keyed by reverse-domain extension namespace. Agent Plugins assigns no semantics to namespace object contents.",
|
|
58
|
+
"additionalProperties": {
|
|
59
|
+
"type": "object"
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
"required": ["$schema", "name"],
|
|
64
|
+
"additionalProperties": false
|
|
65
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: task-delivery
|
|
3
|
+
description: Prepare scoped coding tasks through APort and follow their saved progress, evidence and pull requests.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Read task_capabilities for the connected account. Choose an available configured
|
|
7
|
+
harness and authorized repository. Installation supplies no repository authority,
|
|
8
|
+
credentials or inference allowance. Provider costs and unsupported controls are
|
|
9
|
+
described by capabilities; do not silently select another provider.
|
|
10
|
+
Use only tools advertised by the connected host. A server accepting an older
|
|
11
|
+
alias directly does not mean the host can route that alias.
|
|
12
|
+
|
|
13
|
+
Use task_prepare with the selected repository ID, task text, harness and approved
|
|
14
|
+
allowance. Use a stable operationId and expectedRevision 0. Preparation can incur
|
|
15
|
+
inference costs but does not authorize implementation. Ask the saved questions,
|
|
16
|
+
then call task_answer with their IDs, a new operationId and the saved revision.
|
|
17
|
+
Preserve explicit requirements and any readiness denial. Inspect stale revisions.
|
|
18
|
+
|
|
19
|
+
Read the repository's completion capabilities and select the creation-only
|
|
20
|
+
completion.target: delivery_ready for a qualified reviewable delivery, or
|
|
21
|
+
integrated when the user wants monitoring through an external merge. An omitted
|
|
22
|
+
target defaults to delivery_ready. This field owns the PR/review/merge lifecycle;
|
|
23
|
+
do not duplicate coordinator publication as a provider implementation criterion.
|
|
24
|
+
Organize the user's implementation requirements clearly yourself; do not require
|
|
25
|
+
the user to format a special prompt. Preserve every constraint and prohibition,
|
|
26
|
+
show the separated delivery goal with the prepared brief, and ask a focused
|
|
27
|
+
clarification if mixed prose cannot be separated without changing meaning.
|
|
28
|
+
Never rewrite an existing false attestation or drop an inconvenient requirement.
|
|
29
|
+
The core preserves exact source ownership for supported publication clauses.
|
|
30
|
+
If TASK_DELIVERY_SCOPE is returned, ask the owner to clarify the whole request;
|
|
31
|
+
preserve prerequisites and prohibitions, and use a new preparation identity after
|
|
32
|
+
clarification. Do not treat that refusal as permission to remove a condition or
|
|
33
|
+
silently move a changed publication instruction into an implementation answer.
|
|
34
|
+
|
|
35
|
+
After the user authorizes implementation, call task_start with run true, a stable
|
|
36
|
+
operationId and the current revision. Return the task handle promptly. Subsequent
|
|
37
|
+
task_inspect, task_logs and task_evidence calls read saved observations. They do
|
|
38
|
+
not poll providers. Use task_validate to record readiness before authorizing a
|
|
39
|
+
start. Use task_resume to recover saved preparation or an already approved
|
|
40
|
+
implementation after its blocker is repaired; do not allocate a replacement.
|
|
41
|
+
|
|
42
|
+
The APort host exposes implementation controls as separate tools: task_recheck
|
|
43
|
+
checks an existing implementation, task_continue resumes it, task_message adds
|
|
44
|
+
instructions, task_interrupt requests supported interruption with instructions,
|
|
45
|
+
and task_cancel requests cancellation. Use only a control advertised by the host
|
|
46
|
+
and supported by the saved task. Pass the saved taskId, expectedRevision and a
|
|
47
|
+
stable operationId; task_message and task_interrupt also require a non-empty
|
|
48
|
+
note. Each tool fixes its own action, so do not pass action or interrupt fields.
|
|
49
|
+
Preserve the same operationId and arguments on retries. Cancellation may stop
|
|
50
|
+
future dispatch while remote compute continues. Never claim remote cancellation
|
|
51
|
+
from a stopped submission client.
|
|
52
|
+
|
|
53
|
+
Keep task identity across reconnects and review corrections. Report observed
|
|
54
|
+
tests, artifacts and the pull request. Use completion.status and its canonical
|
|
55
|
+
evidence to describe fulfillment; awaiting_integration means the existing
|
|
56
|
+
coordinator keeps watching without authorizing a merge. A closed, unmerged PR
|
|
57
|
+
does not fulfill the target. Surface needs-human or unverified observations;
|
|
58
|
+
never merge, publish, request credentials or infer completion from provider status.
|
|
59
|
+
The UI receives the full saved view through tool metadata; do not mirror raw logs,
|
|
60
|
+
briefs or private diagnostics into model context. Use authorized artifact IDs.
|
package/templates/prd.md
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
---
|
|
2
|
+
status: draft
|
|
3
|
+
harness: claude
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Short imperative title
|
|
7
|
+
|
|
8
|
+
## Problem
|
|
9
|
+
|
|
10
|
+
What is wrong today, for whom, and what changes when this ships. At least forty words. Name the user, the moment it hurts, and how you will know it is fixed. Link the issue or conversation that raised it if there is one.
|
|
11
|
+
|
|
12
|
+
## User stories
|
|
13
|
+
|
|
14
|
+
- As a <who>, I want <what>, so that <why>.
|
|
15
|
+
- As a <who>, I want <what>, so that <why>.
|
|
16
|
+
|
|
17
|
+
## Acceptance criteria
|
|
18
|
+
|
|
19
|
+
- Given <a starting state>, when <an action>, then <an observable result>.
|
|
20
|
+
- Given <a starting state>, when <an action>, then <an observable result>.
|
|
21
|
+
|
|
22
|
+
## Verify
|
|
23
|
+
|
|
24
|
+
- `npm test`
|
|
25
|
+
|
|
26
|
+
## Where to look
|
|
27
|
+
|
|
28
|
+
- `src/` (or: none)
|
|
29
|
+
|
|
30
|
+
## Out of scope
|
|
31
|
+
|
|
32
|
+
- What this PRD will not do, so the session does not do it either.
|