@geraldmaron/construct 1.4.0 → 1.4.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.
- package/bin/construct +2 -1
- package/bin/construct-postinstall.mjs +27 -2
- package/config/tag-vocabulary.json +264 -0
- package/lib/config/schema.mjs +1 -1
- package/lib/doctor/diagnosis.mjs +20 -0
- package/lib/doctor/index.mjs +5 -0
- package/lib/embed/worker.mjs +5 -0
- package/lib/env-config.mjs +10 -2
- package/lib/export-validate.mjs +34 -2
- package/lib/hooks/guard-bash.mjs +3 -1
- package/lib/host/readiness.mjs +109 -0
- package/lib/host-disposition.mjs +10 -1
- package/lib/install/stage-project.mjs +41 -4
- package/lib/intake/prepare.mjs +2 -0
- package/lib/mcp/destructive-approval.mjs +57 -0
- package/lib/mcp/server.mjs +209 -35
- package/lib/mcp/tool-rate-limit.mjs +47 -0
- package/lib/mcp/tool-safety.mjs +94 -0
- package/lib/mcp/tool-surface-parity.mjs +60 -0
- package/lib/mcp/tools/orchestration-run.mjs +45 -7
- package/lib/mcp/tools/project.mjs +25 -8
- package/lib/mcp/tools/storage.mjs +9 -1
- package/lib/mcp/tools/web-search-governance.mjs +96 -0
- package/lib/mcp/tools/web-search.mjs +6 -44
- package/lib/mcp-platform-config.mjs +27 -18
- package/lib/oracle/daemon-entry.mjs +6 -0
- package/lib/orchestration/runtime.mjs +81 -42
- package/lib/orchestration/web-capability.mjs +59 -0
- package/lib/orchestration/worker.mjs +263 -19
- package/lib/orchestration-policy.mjs +36 -0
- package/lib/output-quality.mjs +61 -2
- package/lib/path-policy.mjs +56 -0
- package/lib/providers/secret-audit-wiring.mjs +35 -18
- package/lib/providers/secret-resolver.mjs +28 -13
- package/lib/registry/catalog.mjs +6 -0
- package/lib/registry/loader.mjs +7 -1
- package/lib/registry/validate.mjs +3 -3
- package/lib/sandbox.mjs +1 -1
- package/lib/service-manager.mjs +59 -9
- package/lib/storage/admin.mjs +7 -2
- package/package.json +6 -1
- package/registry/agent-manifest.json +117 -0
- package/registry/capabilities.json +1880 -0
- package/schemas/brand-voice.schema.json +24 -0
- package/schemas/capability-registry.schema.json +72 -0
- package/schemas/certification-run.schema.json +130 -0
- package/schemas/demo-recording.schema.json +46 -0
- package/schemas/eval-dataset.schema.json +79 -0
- package/schemas/execution-capability-profile.schema.json +46 -0
- package/schemas/execution-policy.schema.json +114 -0
- package/schemas/improvement-proposal.schema.json +65 -0
- package/schemas/mcp-tool-output.schema.json +61 -0
- package/schemas/platform-capabilities.schema.json +83 -0
- package/schemas/project-config.schema.json +227 -0
- package/schemas/project-demo.schema.json +60 -0
- package/schemas/provider-behavior-matrix.schema.json +91 -0
- package/schemas/scope.schema.json +197 -0
- package/schemas/specialist-trace.schema.json +107 -0
- package/schemas/team.schema.json +99 -0
- package/schemas/unified-registry.schema.json +548 -0
- package/scripts/sync-specialists.mjs +135 -12
- package/specialists/org/specialists/cx-researcher.json +1 -0
- package/specialists/prompts/cx-researcher.md +9 -8
- package/vendor/pandoc-ext/README.md +3 -0
- package/vendor/pandoc-ext/diagram.lua +687 -0
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://construct.dev/schemas/specialist-trace.schema.json",
|
|
4
|
+
"title": "SpecialistTrace",
|
|
5
|
+
"description": "One specialist execution trace for the governed improvement loop (construct-6zga.1.7). Captures enough provenance to attribute a failure causally — upstream context, provider execution, the specialist's own output, the handoff contract, the downstream consumer, or evaluator uncertainty — so a specialist is never blamed for an upstream or provider failure.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"required": [
|
|
9
|
+
"schemaVersion", "id", "specialist", "versions", "upstream", "provider",
|
|
10
|
+
"specialistOutput", "handoff", "downstream", "evaluator"
|
|
11
|
+
],
|
|
12
|
+
"properties": {
|
|
13
|
+
"schemaVersion": { "const": 1 },
|
|
14
|
+
"id": { "type": "string", "minLength": 1 },
|
|
15
|
+
"specialist": {
|
|
16
|
+
"type": "object",
|
|
17
|
+
"additionalProperties": true,
|
|
18
|
+
"required": ["role"],
|
|
19
|
+
"properties": {
|
|
20
|
+
"role": { "type": "string" },
|
|
21
|
+
"profileId": { "type": ["string", "null"] },
|
|
22
|
+
"capabilityClass": { "type": ["string", "null"] }
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
"versions": {
|
|
26
|
+
"type": "object",
|
|
27
|
+
"additionalProperties": true,
|
|
28
|
+
"properties": {
|
|
29
|
+
"taskPacket": { "type": ["string", "null"] },
|
|
30
|
+
"prompt": { "type": ["string", "null"] },
|
|
31
|
+
"skill": { "type": ["string", "null"] },
|
|
32
|
+
"roleFlavor": { "type": ["string", "null"] }
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
"upstream": {
|
|
36
|
+
"type": "object",
|
|
37
|
+
"additionalProperties": true,
|
|
38
|
+
"required": ["evidenceComplete", "inputsPresent"],
|
|
39
|
+
"properties": {
|
|
40
|
+
"evidenceComplete": { "type": "boolean" },
|
|
41
|
+
"inputsPresent": { "type": "boolean" }
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
"provider": {
|
|
45
|
+
"type": "object",
|
|
46
|
+
"additionalProperties": true,
|
|
47
|
+
"required": ["executionError", "degraded"],
|
|
48
|
+
"properties": {
|
|
49
|
+
"executionError": { "type": "boolean" },
|
|
50
|
+
"degraded": { "type": "boolean" }
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
"specialistOutput": {
|
|
54
|
+
"type": "object",
|
|
55
|
+
"additionalProperties": true,
|
|
56
|
+
"required": ["evidenceVerdict"],
|
|
57
|
+
"properties": {
|
|
58
|
+
"evidenceVerdict": { "enum": ["pass", "fail", "unverified"] }
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
"handoff": {
|
|
62
|
+
"type": "object",
|
|
63
|
+
"additionalProperties": true,
|
|
64
|
+
"required": ["inputValid", "schemaValid"],
|
|
65
|
+
"properties": {
|
|
66
|
+
"inputValid": { "type": "boolean" },
|
|
67
|
+
"schemaValid": { "type": "boolean" },
|
|
68
|
+
"output": { "type": ["object", "null"] }
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
"downstream": {
|
|
72
|
+
"type": "object",
|
|
73
|
+
"additionalProperties": true,
|
|
74
|
+
"required": ["consumerError", "outcome"],
|
|
75
|
+
"properties": {
|
|
76
|
+
"consumerError": { "type": "boolean" },
|
|
77
|
+
"outcome": { "enum": ["accepted", "rejected", "unknown"] }
|
|
78
|
+
}
|
|
79
|
+
},
|
|
80
|
+
"evaluator": {
|
|
81
|
+
"type": "object",
|
|
82
|
+
"additionalProperties": true,
|
|
83
|
+
"required": ["abstained"],
|
|
84
|
+
"properties": {
|
|
85
|
+
"abstained": { "type": "boolean" },
|
|
86
|
+
"confidence": { "type": ["number", "null"] }
|
|
87
|
+
}
|
|
88
|
+
},
|
|
89
|
+
"cost": { "type": ["number", "null"] },
|
|
90
|
+
"latencyMs": { "type": ["number", "null"] },
|
|
91
|
+
"toolTimeline": { "type": "array", "items": { "type": "object" } },
|
|
92
|
+
"sourceTraceIds": { "type": "array", "items": { "type": "string" } },
|
|
93
|
+
"humanCorrection": {
|
|
94
|
+
"oneOf": [
|
|
95
|
+
{ "type": "null" },
|
|
96
|
+
{
|
|
97
|
+
"type": "object",
|
|
98
|
+
"additionalProperties": true,
|
|
99
|
+
"required": ["target"],
|
|
100
|
+
"properties": {
|
|
101
|
+
"target": { "enum": ["specialist", "upstream", "contract", "downstream", "provider"] }
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
]
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"$id": "https://geraldmaron.github.io/construct/schemas/team.schema.json",
|
|
4
|
+
"title": "Construct Team",
|
|
5
|
+
"description": "A team is an explicitly-defined organizational unit with clear accountability, decision rights, forbidden decisions, escalation paths, and contact info. Teams are the primary organizational structure in the redesigned model.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"required": ["id", "name", "owner", "roles", "charter"],
|
|
8
|
+
"additionalProperties": false,
|
|
9
|
+
"properties": {
|
|
10
|
+
"kind": { "type": "string", "enum": ["group", "squad"] },
|
|
11
|
+
"groupId": { "type": "string" },
|
|
12
|
+
"squads": { "type": "array", "items": { "type": "string" } },
|
|
13
|
+
"collaborators": { "type": "array", "items": { "type": "string" } },
|
|
14
|
+
"specialists": { "type": "array", "items": { "type": "string" } },
|
|
15
|
+
"id": {
|
|
16
|
+
"type": "string",
|
|
17
|
+
"pattern": "^[a-z][a-z0-9-]{1,40}$",
|
|
18
|
+
"description": "Unique team identifier (e.g., product-group, platform-group, research-group). Used in policy gates and escalation paths."
|
|
19
|
+
},
|
|
20
|
+
"name": {
|
|
21
|
+
"type": "string",
|
|
22
|
+
"minLength": 1,
|
|
23
|
+
"maxLength": 80,
|
|
24
|
+
"description": "Human-readable team name (e.g., Product Group, Platform Group, Research Group)."
|
|
25
|
+
},
|
|
26
|
+
"owner": {
|
|
27
|
+
"type": "string",
|
|
28
|
+
"pattern": "^[a-z][a-z0-9-]{1,40}$",
|
|
29
|
+
"description": "Role id of the team owner/lead (e.g., product-manager, platform-engineer, researcher). This person holds primary accountability for team decisions."
|
|
30
|
+
},
|
|
31
|
+
"roles": {
|
|
32
|
+
"type": "array",
|
|
33
|
+
"minItems": 1,
|
|
34
|
+
"maxItems": 20,
|
|
35
|
+
"description": "List of role ids that constitute this team.",
|
|
36
|
+
"items": {
|
|
37
|
+
"type": "string",
|
|
38
|
+
"pattern": "^[a-z][a-z0-9-]{1,40}$"
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
"decisionRights": {
|
|
42
|
+
"type": "array",
|
|
43
|
+
"description": "Decisions this team is authorized to make. Examples: intake-triage, design-approval, deployment, scope-change, etc.",
|
|
44
|
+
"items": {
|
|
45
|
+
"type": "string",
|
|
46
|
+
"pattern": "^[a-z][a-z0-9-]{1,40}$"
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
"forbiddenDecisions": {
|
|
50
|
+
"type": "array",
|
|
51
|
+
"description": "Decisions this team explicitly cannot make. Attempts to make forbidden decisions escalate automatically.",
|
|
52
|
+
"items": {
|
|
53
|
+
"type": "string",
|
|
54
|
+
"pattern": "^[a-z][a-z0-9-]{1,40}$"
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
"escalationPath": {
|
|
58
|
+
"type": "array",
|
|
59
|
+
"description": "Chain of escalation for unresolved decisions. First element is the team owner, then subsequent elements for higher-level escalation.",
|
|
60
|
+
"items": {
|
|
61
|
+
"type": "string",
|
|
62
|
+
"pattern": "^[a-z][a-z0-9-]{1,40}$"
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
"charter": {
|
|
66
|
+
"type": "string",
|
|
67
|
+
"minLength": 20,
|
|
68
|
+
"maxLength": 800,
|
|
69
|
+
"description": "One-paragraph mission statement: what this team owns, what it doesn't own, and key constraints. Written in voice of accountability, not aspiration."
|
|
70
|
+
},
|
|
71
|
+
"contact": {
|
|
72
|
+
"type": "object",
|
|
73
|
+
"description": "How to reach this team.",
|
|
74
|
+
"additionalProperties": false,
|
|
75
|
+
"properties": {
|
|
76
|
+
"slack": {
|
|
77
|
+
"type": "string",
|
|
78
|
+
"description": "Slack channel (e.g., #product, #platform)."
|
|
79
|
+
},
|
|
80
|
+
"email": {
|
|
81
|
+
"type": "string",
|
|
82
|
+
"format": "email",
|
|
83
|
+
"description": "Team email address (e.g., product@example.com)."
|
|
84
|
+
},
|
|
85
|
+
"owner": {
|
|
86
|
+
"type": "string",
|
|
87
|
+
"description": "Direct contact for the team owner (name or email)."
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
},
|
|
91
|
+
"evidence": {
|
|
92
|
+
"type": "array",
|
|
93
|
+
"description": "Primary sources justifying this team's structure (interviews, job specs, ADRs, organizational research).",
|
|
94
|
+
"items": {
|
|
95
|
+
"type": "string"
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|