@eir-labs/coltrane 0.5.1 → 0.7.2

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 (115) hide show
  1. package/README.md +23 -0
  2. package/agents/bill.json +59 -0
  3. package/agents/deploy-agent.json +68 -0
  4. package/agents/deploy-scout.json +40 -0
  5. package/agents/john.json +42 -0
  6. package/agents/miles.json +44 -0
  7. package/charts/software-delivery-v1.json +9 -0
  8. package/charts/software-delivery-v2.json +39 -0
  9. package/dist/src/bifrost_invoker.js +5 -3
  10. package/dist/src/bifrost_invoker.js.map +1 -1
  11. package/dist/src/canonical_form.d.ts +23 -0
  12. package/dist/src/canonical_form.js +53 -0
  13. package/dist/src/canonical_form.js.map +1 -1
  14. package/dist/src/chart.d.ts +254 -0
  15. package/dist/src/chart.js +897 -0
  16. package/dist/src/chart.js.map +1 -0
  17. package/dist/src/claude_invoker.d.ts +20 -3
  18. package/dist/src/claude_invoker.js +30 -5
  19. package/dist/src/claude_invoker.js.map +1 -1
  20. package/dist/src/cli.d.ts +19 -4
  21. package/dist/src/cli.js +132 -9
  22. package/dist/src/cli.js.map +1 -1
  23. package/dist/src/composition.d.ts +24 -0
  24. package/dist/src/composition.js +50 -5
  25. package/dist/src/composition.js.map +1 -1
  26. package/dist/src/conduct_daemon.d.ts +59 -0
  27. package/dist/src/conduct_daemon.js +178 -0
  28. package/dist/src/conduct_daemon.js.map +1 -0
  29. package/dist/src/genome_schema.d.ts +1476 -146
  30. package/dist/src/genome_schema.js +438 -32
  31. package/dist/src/genome_schema.js.map +1 -1
  32. package/dist/src/genome_store.d.ts +79 -0
  33. package/dist/src/genome_store.js +503 -0
  34. package/dist/src/genome_store.js.map +1 -0
  35. package/dist/src/gig_tracker.d.ts +11 -1
  36. package/dist/src/gig_tracker.js +5 -0
  37. package/dist/src/gig_tracker.js.map +1 -1
  38. package/dist/src/hosted_tools.d.ts +23 -0
  39. package/dist/src/hosted_tools.js +170 -0
  40. package/dist/src/hosted_tools.js.map +1 -0
  41. package/dist/src/index.d.ts +4 -0
  42. package/dist/src/index.js +4 -0
  43. package/dist/src/index.js.map +1 -1
  44. package/dist/src/ledger.d.ts +22 -0
  45. package/dist/src/ledger.js +4 -0
  46. package/dist/src/ledger.js.map +1 -1
  47. package/dist/src/loader.d.ts +9 -1
  48. package/dist/src/loader.js +105 -5
  49. package/dist/src/loader.js.map +1 -1
  50. package/dist/src/mcp.js +52 -5
  51. package/dist/src/mcp.js.map +1 -1
  52. package/dist/src/output_mirror.d.ts +70 -0
  53. package/dist/src/output_mirror.js +381 -0
  54. package/dist/src/output_mirror.js.map +1 -0
  55. package/dist/src/outputs.d.ts +77 -1
  56. package/dist/src/outputs.js +179 -37
  57. package/dist/src/outputs.js.map +1 -1
  58. package/dist/src/play_worker.d.ts +24 -0
  59. package/dist/src/play_worker.js +49 -0
  60. package/dist/src/play_worker.js.map +1 -0
  61. package/dist/src/registry.d.ts +2 -0
  62. package/dist/src/registry.js +63 -33
  63. package/dist/src/registry.js.map +1 -1
  64. package/dist/src/reuse.d.ts +56 -0
  65. package/dist/src/reuse.js +0 -0
  66. package/dist/src/reuse.js.map +1 -1
  67. package/dist/src/runtime.d.ts +91 -2
  68. package/dist/src/runtime.js +236 -18
  69. package/dist/src/runtime.js.map +1 -1
  70. package/dist/src/seal_drill.d.ts +32 -0
  71. package/dist/src/seal_drill.js +138 -0
  72. package/dist/src/seal_drill.js.map +1 -0
  73. package/dist/src/server.d.ts +39 -1
  74. package/dist/src/server.js +760 -68
  75. package/dist/src/server.js.map +1 -1
  76. package/dist/src/skill_subprocess.js +12 -4
  77. package/dist/src/skill_subprocess.js.map +1 -1
  78. package/dist/src/supabase_genome.d.ts +28 -0
  79. package/dist/src/supabase_genome.js +49 -0
  80. package/dist/src/supabase_genome.js.map +1 -0
  81. package/dist/src/tool_surface.d.ts +5 -0
  82. package/dist/src/tool_surface.js +15 -0
  83. package/dist/src/tool_surface.js.map +1 -0
  84. package/dist/src/version.d.ts +1 -1
  85. package/dist/src/version.js +1 -1
  86. package/dist/src/worker.d.ts +182 -0
  87. package/dist/src/worker.js +609 -0
  88. package/dist/src/worker.js.map +1 -0
  89. package/domain_types/branch-state.json +21 -0
  90. package/domain_types/change-context.json +39 -0
  91. package/domain_types/change-decision.json +36 -0
  92. package/domain_types/change-plan.json +47 -0
  93. package/domain_types/change-request.json +24 -0
  94. package/domain_types/change-set.json +46 -0
  95. package/domain_types/change-verdict.json +26 -0
  96. package/domain_types/deploy-verdict.json +23 -0
  97. package/domain_types/design-brief.json +37 -0
  98. package/domain_types/design-concept.json +36 -0
  99. package/domain_types/design-definition.json +37 -0
  100. package/domain_types/design-question.json +23 -0
  101. package/domain_types/design-verdict.json +27 -0
  102. package/domain_types/preview-deployment.json +32 -0
  103. package/institutions/quartet.json +344 -0
  104. package/package.json +21 -3
  105. package/skills/vercel-api/fixtures/error.json +10 -0
  106. package/skills/vercel-api/fixtures/ready.json +10 -0
  107. package/skills/vercel-api/fixtures/unsettled.json +10 -0
  108. package/skills/vercel-api/meta.json +10 -0
  109. package/skills/vercel-api/skill.mjs +63 -0
  110. package/standards/preview-deploy-v1.json +89 -0
  111. package/standards/product-design-v1.json +122 -0
  112. package/standards/promote-v1.json +41 -0
  113. package/standards/software-change-v1.json +147 -0
  114. package/venues/ci-deploy-room-v1.json +28 -0
  115. package/venues/empty-room-v1.json +19 -0
@@ -0,0 +1,122 @@
1
+ {
2
+ "slug": "product-design-v1",
3
+ "domain": "product-design",
4
+ "status": "active",
5
+ "description": "The default product-design standard: a double diamond mapped onto the cognitive primitives without embellishment. Discover diverges (SENSE then INTERPRET); define converges (JUDGE, sealing a Plan); develop diverges again and builds (PLAN then CREATE); deliver converges (VERIFY). The two convergences are held by the same seat and the two divergences by different ones, so a widening pass is never marked complete by the seat that narrowed it.",
6
+ "agent_slugs": [
7
+ "john",
8
+ "bill",
9
+ "miles"
10
+ ],
11
+ "phases": [
12
+ {
13
+ "name": "discover",
14
+ "chairs": [
15
+ {
16
+ "role": "discover",
17
+ "agent_slug": "john",
18
+ "depends_on": [],
19
+ "input_contract": [
20
+ "design-question"
21
+ ],
22
+ "output_contract": [
23
+ "design-brief"
24
+ ],
25
+ "required_skills": []
26
+ }
27
+ ],
28
+ "intent": "First divergence. Hold the question open: observations with their locators, the audience segments it lands differently for, the needs the current state does not serve, the adjacent questions the exploration surfaced, and an honest statement of how far the exploration actually reached. Findings only \u2014 nothing is chosen here."
29
+ },
30
+ {
31
+ "name": "define",
32
+ "chairs": [
33
+ {
34
+ "role": "define",
35
+ "agent_slug": "miles",
36
+ "depends_on": [
37
+ "discover"
38
+ ],
39
+ "input_contract": [
40
+ "design-brief"
41
+ ],
42
+ "output_contract": [
43
+ "design-definition"
44
+ ],
45
+ "required_skills": []
46
+ }
47
+ ],
48
+ "intent": "First convergence, and the seam between the diamonds. Name the ONE problem the second diamond opens on, what is out of scope, the success criteria a stranger could check \u2014 and, explicitly, the problems the brief surfaced that this definition discarded, each with its reason. Sealed as a Plan because the definition sequences what follows."
49
+ },
50
+ {
51
+ "name": "develop",
52
+ "chairs": [
53
+ {
54
+ "role": "develop",
55
+ "agent_slug": "bill",
56
+ "depends_on": [
57
+ "define"
58
+ ],
59
+ "input_contract": [
60
+ "design-definition"
61
+ ],
62
+ "output_contract": [
63
+ "design-concept"
64
+ ],
65
+ "required_skills": [],
66
+ "preferred_skills": [
67
+ "structure-conformance"
68
+ ]
69
+ }
70
+ ],
71
+ "intent": "Second divergence, built rather than described. The concept states its mechanism step by step, names which success criteria it answers, and carries its tradeoffs and open questions \u2014 a concept presented as settled cannot be evaluated against the contest it hides."
72
+ },
73
+ {
74
+ "name": "deliver",
75
+ "chairs": [
76
+ {
77
+ "role": "deliver",
78
+ "agent_slug": "miles",
79
+ "depends_on": [
80
+ "define",
81
+ "develop"
82
+ ],
83
+ "input_contract": [
84
+ "design-definition",
85
+ "design-concept"
86
+ ],
87
+ "output_contract": [
88
+ "design-verdict"
89
+ ],
90
+ "required_skills": []
91
+ }
92
+ ],
93
+ "intent": "Second convergence. Measure the concept against the definition as sealed, criterion by criterion, and separate what was observed from what was reasoned about \u2014 most design criteria cannot be executed, so a verdict that does not say so overstates its own evidence. Where the concept is sound but the problem was the wrong one, the recommendation returns the run to the first seam."
94
+ },
95
+ {
96
+ "name": "approve",
97
+ "chairs": [
98
+ {
99
+ "role": "approve",
100
+ "agent_slug": "",
101
+ "human": true,
102
+ "depends_on": [
103
+ "deliver"
104
+ ],
105
+ "input_contract": [],
106
+ "output_contract": [
107
+ "Judgment"
108
+ ],
109
+ "optional_outputs": [],
110
+ "required_skills": []
111
+ }
112
+ ]
113
+ }
114
+ ],
115
+ "input_types": [
116
+ "design-question"
117
+ ],
118
+ "output_types": [
119
+ "design-concept",
120
+ "design-verdict"
121
+ ]
122
+ }
@@ -0,0 +1,41 @@
1
+ {
2
+ "slug": "promote-v1",
3
+ "domain": "preview-deploy",
4
+ "status": "active",
5
+ "description": "A minimal promote stub — the third movement of software-delivery-v2. It declares preview-deployment in its input_types so the chart's movement-2 → movement-3 edge is a satisfied hard edge (R7), and its one chair reads the deployment_id from the sealed preview-deployment to promote it to production, sealing a deploy-verdict for the production build's terminal state. Its FULL phase graph is deferred by the sealed design (gig 0538105e names movement-3 as a contract boundary only, requiring its own design run); this file is built only to the extent the chart's honest edge and the approval gate before it require. The gate's Judgment is offered to this movement as a seed at runtime — the approver's decision lands in the production deploy's ledger ancestry — without being declared in input_contract, because declaring it as a standard input would make it an outside-need the chart has no edge to satisfy.",
6
+ "agent_slugs": [
7
+ "deploy-agent"
8
+ ],
9
+ "phases": [
10
+ {
11
+ "name": "promote",
12
+ "chairs": [
13
+ {
14
+ "role": "promote-preview",
15
+ "agent_slug": "deploy-agent",
16
+ "depends_on": [],
17
+ "input_contract": [
18
+ "preview-deployment"
19
+ ],
20
+ "output_contract": [
21
+ "deploy-verdict"
22
+ ],
23
+ "required_skills": [
24
+ "vercel-api"
25
+ ],
26
+ "supplies": {
27
+ "vercel_token": "env:VERCEL_TOKEN",
28
+ "vercel_team_id": "env:VERCEL_TEAM_ID"
29
+ }
30
+ }
31
+ ],
32
+ "intent": "Read the deployment_id from the sealed preview-deployment, promote that deployment to production through the Vercel promote API, and wait on the production build with the same bounded poll, sealing a deploy-verdict for its terminal state. STUB: the full promote phase graph is deferred to its own design run per the sealed design's boundary."
33
+ }
34
+ ],
35
+ "input_types": [
36
+ "preview-deployment"
37
+ ],
38
+ "output_types": [
39
+ "deploy-verdict"
40
+ ]
41
+ }
@@ -0,0 +1,147 @@
1
+ {
2
+ "slug": "software-change-v1",
3
+ "domain": "software-change",
4
+ "status": "active",
5
+ "description": "The default software-change standard. Read the material exhaustively, fix the direction, settle the structure, make the change, then say whether what was built is what was decided. The seams are deliberate: the seat that reads does not decide, the seat that decides does not build, and the seat that builds does not judge its own work. Only the reading seat holds a tool grant, and it is read-only \u2014 the change is emitted as reviewable content, never applied.",
6
+ "agent_slugs": [
7
+ "john",
8
+ "bill",
9
+ "miles"
10
+ ],
11
+ "phases": [
12
+ {
13
+ "name": "sense-context",
14
+ "chairs": [
15
+ {
16
+ "role": "read-context",
17
+ "agent_slug": "john",
18
+ "depends_on": [],
19
+ "input_contract": [
20
+ "change-request"
21
+ ],
22
+ "output_contract": [
23
+ "change-context"
24
+ ],
25
+ "required_skills": []
26
+ }
27
+ ],
28
+ "intent": "Read the material the change lands in, to the declared boundary and no further: entry points, the files the change plausibly touches, the checks that already cover the region, the conventions it must hold to \u2014 and the unknowns, which are part of the reading, not a failure of it. No decision is taken here."
29
+ },
30
+ {
31
+ "name": "frame-change",
32
+ "chairs": [
33
+ {
34
+ "role": "frame-change",
35
+ "agent_slug": "miles",
36
+ "depends_on": [
37
+ "read-context"
38
+ ],
39
+ "input_contract": [
40
+ "change-context"
41
+ ],
42
+ "output_contract": [
43
+ "change-decision"
44
+ ],
45
+ "required_skills": []
46
+ }
47
+ ],
48
+ "intent": "Fix the direction from the reading: scope, non-goals, stop condition, and the alternatives set aside with their reasons. Stated before any structure exists, so the structure is answerable to it. Settled for the run \u2014 later phases append observations, never revisions."
49
+ },
50
+ {
51
+ "name": "plan-change",
52
+ "chairs": [
53
+ {
54
+ "role": "plan-change",
55
+ "agent_slug": "bill",
56
+ "depends_on": [
57
+ "read-context",
58
+ "frame-change"
59
+ ],
60
+ "input_contract": [
61
+ "change-context",
62
+ "change-decision"
63
+ ],
64
+ "output_contract": [
65
+ "change-plan"
66
+ ],
67
+ "required_skills": [],
68
+ "preferred_skills": [
69
+ "structure-conformance"
70
+ ]
71
+ }
72
+ ],
73
+ "intent": "Settle the structure the change will be built through: ordered steps with explicit dependencies, the checks that land FIRST together with what each reports while the change is absent, the paths the plan commits to touching, and the tradeoff at every step where more than one structure would have served."
74
+ },
75
+ {
76
+ "name": "create-change",
77
+ "chairs": [
78
+ {
79
+ "role": "write-change",
80
+ "agent_slug": "bill",
81
+ "depends_on": [
82
+ "plan-change"
83
+ ],
84
+ "input_contract": [
85
+ "change-plan"
86
+ ],
87
+ "output_contract": [
88
+ "change-set"
89
+ ],
90
+ "required_skills": [],
91
+ "preferred_skills": [
92
+ "structure-conformance"
93
+ ]
94
+ }
95
+ ],
96
+ "intent": "Make the change the structure implies, as patch content plus the checks it introduces. Where the artefact left the plan, the departure is recorded with its reason \u2014 the same seat that settled the structure is the one accountable for saying where it did not hold."
97
+ },
98
+ {
99
+ "name": "verify-change",
100
+ "chairs": [
101
+ {
102
+ "role": "verify-change",
103
+ "agent_slug": "miles",
104
+ "depends_on": [
105
+ "plan-change",
106
+ "write-change"
107
+ ],
108
+ "input_contract": [
109
+ "change-plan",
110
+ "change-set"
111
+ ],
112
+ "output_contract": [
113
+ "change-verdict"
114
+ ],
115
+ "required_skills": []
116
+ }
117
+ ],
118
+ "intent": "Measure the change against the commitments as fixed, criterion by criterion: which acceptance criteria are unmet, where the scope drifted, and \u2014 separately and always \u2014 which checks could not be executed and were reasoned about instead. When the evidence does not reach the question, the verdict is insufficient evidence, not a pass."
119
+ },
120
+ {
121
+ "name": "approve",
122
+ "chairs": [
123
+ {
124
+ "role": "approve",
125
+ "agent_slug": "",
126
+ "human": true,
127
+ "depends_on": [
128
+ "verify-change"
129
+ ],
130
+ "input_contract": [],
131
+ "output_contract": [
132
+ "Judgment"
133
+ ],
134
+ "optional_outputs": [],
135
+ "required_skills": []
136
+ }
137
+ ]
138
+ }
139
+ ],
140
+ "input_types": [
141
+ "change-request"
142
+ ],
143
+ "output_types": [
144
+ "change-set",
145
+ "change-verdict"
146
+ ]
147
+ }
@@ -0,0 +1,28 @@
1
+ {
2
+ "slug": "ci-deploy-room-v1",
3
+ "institution_slug": "quartet",
4
+ "flavor": "ci-deploy",
5
+ "description": "The room a change-to-preview arrangement is held in. It equips exactly what the movements need and nothing more: read-only filesystem tools so the reading and branch-sensing seats can read the working tree, and the Vercel REST origin so the deploy seat can build and poll — a ceiling, not a grant, so it can only narrow a seated agent's own charter, never widen it. The one egress door names api.vercel.com; the only credential class it admits is the Vercel token, filled at seat time from the environment. Ephemeral, because a room that stood between runs would carry one gig's branch state and warm credentials into the next.",
6
+ "equipment": {
7
+ "tools": [
8
+ "Read",
9
+ "Glob",
10
+ "Grep",
11
+ "WebFetch(https://api.vercel.com/*)"
12
+ ]
13
+ },
14
+ "doors": {
15
+ "ingress": [],
16
+ "egress": [
17
+ "api.vercel.com"
18
+ ]
19
+ },
20
+ "installs": [],
21
+ "credential_surface": [
22
+ "vercel-token"
23
+ ],
24
+ "lifecycle": {
25
+ "policy": "ephemeral"
26
+ },
27
+ "responsible_chair": "quartet.chair.responsible-officer"
28
+ }
@@ -0,0 +1,19 @@
1
+ {
2
+ "slug": "empty-room-v1",
3
+ "institution_slug": "quartet",
4
+ "flavor": "ingest-empty",
5
+ "description": "The goods entrance. This is the room for reading third-party content — mail, chat platforms, web pages, vendor documents — and it is bare because bareness is the control. Untrusted text cannot be reliably separated from instruction by the model reading it, so the constraint has to be structural: it holds NO tools (not read-only tools; none), no egress door of any kind, no credential surface, and nothing installed. One ingress door names the single source it reads from. A chair seated here can do exactly one thing: emit a typed record of what it read, whose provenance says the content is untrusted and never instruction, into a spool a LATER phase drains from a different room — one that holds interpretation capability and no ingress from this source. Private data is absent (no credentials, nothing mounted) and there is no attacker-steerable exit (no egress, and the one write goes to a fixed engine-chosen destination the content cannot redirect), so two of the three conditions that make injected instructions consequential are structurally missing rather than argued away. What remains is the spool write itself, which is a channel: fixed destination, declared type, no attacker-chosen route. The claim is a BOUNDED residual channel, not the absence of one. Ephemeral because a room that persists between ingestions carries the previous ingestion's content forward into whoever sits here next.",
6
+ "equipment": {
7
+ "tools": []
8
+ },
9
+ "doors": {
10
+ "ingress": ["mail.example.com"],
11
+ "egress": []
12
+ },
13
+ "installs": [],
14
+ "credential_surface": [],
15
+ "lifecycle": {
16
+ "policy": "ephemeral"
17
+ },
18
+ "responsible_chair": "quartet.chair.responsible-officer"
19
+ }