@jstn-sdk/ma 0.1.13 → 0.14.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/.agents/plugins/marketplace.json +0 -0
- package/.codex/agents/Architect.toml +1 -0
- package/.codex/agents/Auditor.toml +1 -0
- package/.codex/agents/Builder.toml +1 -0
- package/.codex/agents/Flow.toml +1 -0
- package/.codex/agents/Sage.toml +1 -0
- package/.codex/agents/Vibe.toml +1 -0
- package/.codex/hooks.json +12 -2
- package/.codex/prompts/enforcement.md +0 -0
- package/.codex/prompts/onboarding.md +6 -1
- package/.codex/prompts/release-rules.md +0 -0
- package/.codex/prompts/skill-contract.md +0 -0
- package/COVERAGE.md +9 -9
- package/DEMO.md +15 -6
- package/LICENSE +0 -0
- package/README.md +127 -784
- package/bin/ma.js +591 -105
- package/data/clone-data.ledger.json +0 -0
- package/data/clone-data.proof.json +0 -0
- package/data/clone-data.rvf +0 -0
- package/docs/README.md +8 -2
- package/docs/assets/banner.png +0 -0
- package/docs/autonomous-tasks.md +46 -0
- package/docs/codex-integration.md +16 -0
- package/docs/getting-started.md +32 -8
- package/docs/installed-sdk.md +0 -0
- package/docs/mcp-setup.md +30 -1
- package/docs/qa/{release-issue-gates-0.1.13.json → release-issue-gates-0.14.1.json} +77 -77
- package/docs/qa/release-readiness-0.1.5.md +0 -0
- package/docs/qa/{release-readiness-0.1.13.md → release-readiness-0.14.1.md} +12 -12
- package/docs/quality.md +24 -0
- package/docs/reference/native-engineering-patterns.md +0 -0
- package/docs/reference/native-security-playbooks.md +0 -0
- package/docs/reference/native-source-selection.md +0 -0
- package/docs/reference/native-style-and-deslop.md +0 -0
- package/docs/release-spec.md +27 -14
- package/docs/skills.md +1 -1
- package/docs/vendor-plugin-publishing.md +49 -0
- package/index.js +73 -0
- package/mcp/collections.json +0 -0
- package/mcp/fallback.json +0 -0
- package/mcp/local/code-intel.js +185 -41
- package/mcp/local/context.js +180 -0
- package/mcp/local/memory.js +17 -6
- package/mcp/local/playbooks.js +0 -0
- package/mcp/local/quality.js +39 -0
- package/mcp/local/state.js +7 -3
- package/mcp/local/team-run.js +8 -3
- package/mcp/local/trace.js +0 -0
- package/mcp/local-capabilities.json +9 -0
- package/mcp/native-playbooks.json +0 -0
- package/mcp/servers.json +0 -0
- package/package.json +37 -6
- package/plugins/meta-architect/.app.json +1 -1
- package/plugins/meta-architect/.claude-plugin/plugin.json +12 -0
- package/plugins/meta-architect/.codex-plugin/plugin.json +1 -1
- package/plugins/meta-architect/.mcp.json +1 -1
- package/plugins/meta-architect/README.md +14 -2
- package/plugins/meta-architect/obsidian/main.js +137 -4
- package/plugins/meta-architect/obsidian/manifest.json +1 -1
- package/plugins/meta-architect/obsidian/styles.css +0 -0
- package/plugins/meta-architect/skills/align/SKILL.md +0 -0
- package/plugins/meta-architect/skills/align/agents/openai.yaml +0 -0
- package/plugins/meta-architect/skills/align/references/shared-language.md +0 -0
- package/plugins/meta-architect/skills/arch/SKILL.md +0 -0
- package/plugins/meta-architect/skills/arch/agents/openai.yaml +0 -0
- package/plugins/meta-architect/skills/build/SKILL.md +0 -0
- package/plugins/meta-architect/skills/build/agents/openai.yaml +0 -0
- package/plugins/meta-architect/skills/cleanup/SKILL.md +0 -0
- package/plugins/meta-architect/skills/cleanup/agents/openai.yaml +0 -0
- package/plugins/meta-architect/skills/cleanup/references/style-and-deslop.md +0 -0
- package/plugins/meta-architect/skills/diagnose/SKILL.md +0 -0
- package/plugins/meta-architect/skills/diagnose/agents/openai.yaml +0 -0
- package/plugins/meta-architect/skills/flow/SKILL.md +0 -0
- package/plugins/meta-architect/skills/flow/agents/openai.yaml +0 -0
- package/plugins/meta-architect/skills/maestro/SKILL.md +17 -1
- package/plugins/meta-architect/skills/maestro/agents/openai.yaml +0 -0
- package/plugins/meta-architect/skills/maestro/references/core-release-rules.md +2 -2
- package/plugins/meta-architect/skills/maestro/references/native-ingest-map.md +0 -0
- package/plugins/meta-architect/skills/sage/SKILL.md +0 -0
- package/plugins/meta-architect/skills/sage/agents/openai.yaml +0 -0
- package/plugins/meta-architect/skills/sage/references/source-selection.md +0 -0
- package/plugins/meta-architect/skills/tdd/SKILL.md +0 -0
- package/plugins/meta-architect/skills/tdd/agents/openai.yaml +0 -0
- package/plugins/meta-architect/skills/vet/SKILL.md +0 -0
- package/plugins/meta-architect/skills/vet/agents/openai.yaml +0 -0
- package/plugins/meta-architect/skills/vet/references/security-playbooks.md +0 -0
- package/plugins/meta-architect/skills/vibe/SKILL.md +0 -0
- package/plugins/meta-architect/skills/vibe/agents/openai.yaml +0 -0
- package/schemas/autonomous-task-queue.schema.json +58 -0
- package/schemas/handoff-packet.schema.json +36 -0
- package/schemas/setup-receipt.schema.json +28 -0
- package/schemas/skill-frontmatter.schema.json +20 -0
- package/schemas/support-bundle.schema.json +37 -0
- package/schemas/task-contract.schema.json +31 -0
- package/scripts/active-autonomy-hook.mjs +141 -11
- package/scripts/biome-staged.js +0 -0
- package/scripts/build-linux-packages.mjs +7 -3
- package/scripts/cleanup-test-fixtures.sh +55 -0
- package/scripts/context-hydration-hook.mjs +89 -0
- package/scripts/demo-smoke.js +285 -0
- package/scripts/doctor.js +10 -8
- package/scripts/install.sh +33 -4
- package/scripts/install.sh.sha256 +1 -0
- package/scripts/linux-package-lib.mjs +0 -0
- package/scripts/linux-package-smoke.mjs +2 -2
- package/scripts/package-size-check.mjs +26 -0
- package/scripts/plugin-build.js +314 -0
- package/scripts/plugin-publish.js +77 -0
- package/scripts/plugin-sync.js +83 -17
- package/scripts/prepack.js +9 -0
- package/scripts/ralph/prompt.md +0 -0
- package/scripts/release-metadata.js +0 -0
- package/scripts/release-sync.js +83 -7
- package/scripts/release-verify.js +131 -7
- package/scripts/setup-npmrc.js +48 -23
- package/scripts/skills-install.js +9 -2
- package/scripts/skills-manifest.js +2 -21
- package/scripts/skills-pack.js +2 -2
- package/scripts/skills-validate.js +5 -55
- package/skills/align/SKILL.md +0 -0
- package/skills/align/agents/openai.yaml +0 -0
- package/skills/align/references/shared-language.md +0 -0
- package/skills/arch/SKILL.md +0 -0
- package/skills/arch/agents/openai.yaml +0 -0
- package/skills/build/SKILL.md +0 -0
- package/skills/build/agents/openai.yaml +0 -0
- package/skills/cleanup/SKILL.md +0 -0
- package/skills/cleanup/agents/openai.yaml +0 -0
- package/skills/cleanup/references/style-and-deslop.md +0 -0
- package/skills/diagnose/SKILL.md +0 -0
- package/skills/diagnose/agents/openai.yaml +0 -0
- package/skills/flow/SKILL.md +0 -0
- package/skills/flow/agents/openai.yaml +0 -0
- package/skills/index.json +0 -0
- package/skills/maestro/SKILL.md +17 -1
- package/skills/maestro/agents/openai.yaml +0 -0
- package/skills/maestro/references/core-release-rules.md +2 -2
- package/skills/maestro/references/native-ingest-map.md +0 -0
- package/skills/sage/SKILL.md +0 -0
- package/skills/sage/agents/openai.yaml +0 -0
- package/skills/sage/references/source-selection.md +0 -0
- package/skills/tdd/SKILL.md +0 -0
- package/skills/tdd/agents/openai.yaml +0 -0
- package/skills/vet/SKILL.md +0 -0
- package/skills/vet/agents/openai.yaml +0 -0
- package/skills/vet/references/security-playbooks.md +0 -0
- package/skills/vibe/SKILL.md +0 -0
- package/skills/vibe/agents/openai.yaml +0 -0
- package/sprint/00-idea.md +0 -0
- package/sprint/01-architecture.md +0 -0
- package/sprint/02-oss-evidence.md +0 -0
- package/sprint/03-logic.md +0 -0
- package/sprint/04-security.md +0 -0
- package/sprint/05-dx-ux.md +0 -0
- package/sprint/06-build-plan.md +0 -0
- package/sprint/07-release.md +2 -2
- package/src/agents.js +281 -0
- package/src/bootstrap.js +272 -65
- package/src/build-gate.js +0 -0
- package/src/codex-app-server.js +291 -0
- package/src/decision-log.js +0 -0
- package/src/fs-utils.js +175 -4
- package/src/launcher.js +26 -23
- package/src/mcp-config.js +9 -1
- package/src/mcp-live-client.js +141 -8
- package/src/paths.js +6 -1
- package/src/policy.js +2 -2
- package/src/prelaunch.js +223 -0
- package/src/process-utils.js +62 -0
- package/src/quality/ai-quality-orchestrator.js +328 -0
- package/src/release-issue-gates.js +62 -0
- package/src/release-operations.js +72 -0
- package/src/release-state.js +0 -0
- package/src/runtime/active-autonomy-core.js +0 -0
- package/src/runtime/agent-compat.js +31 -0
- package/src/runtime/alignment-sentinel.js +0 -0
- package/src/runtime/architect-review.js +249 -11
- package/src/runtime/autonomous-tasks.js +585 -0
- package/src/runtime/build-readiness.js +0 -0
- package/src/runtime/code-graph-rehearse.js +0 -0
- package/src/runtime/codeburn-core.js +118 -0
- package/src/runtime/context-authority.js +40 -0
- package/src/runtime/context-economy-core.js +40 -0
- package/src/runtime/continuity-graph.js +201 -0
- package/src/runtime/continuity-notes.js +71 -26
- package/src/runtime/core-source-ingest.js +2 -2
- package/src/runtime/detached-provider.js +90 -13
- package/src/runtime/doctor-report.js +18 -0
- package/src/runtime/environment-awareness-core.js +0 -0
- package/src/runtime/exposure-catalog.js +0 -0
- package/src/runtime/graphify-core.js +167 -0
- package/src/runtime/guidance-stack.js +9 -2
- package/src/runtime/handoff-packets.js +92 -0
- package/src/runtime/headroom-core.js +104 -0
- package/src/runtime/helper-orchestration-core.js +0 -0
- package/src/runtime/hook-profiles.js +20 -0
- package/src/runtime/learning-loop-core.js +110 -4
- package/src/runtime/live-agent-verification.js +122 -0
- package/src/runtime/maestro-events.js +0 -0
- package/src/runtime/maestro-manager.js +0 -0
- package/src/runtime/maestro-output.js +58 -0
- package/src/runtime/maestro-state.js +0 -0
- package/src/runtime/managed-markdown.js +29 -0
- package/src/runtime/mcp-authority.js +147 -0
- package/src/runtime/mcp-policy.js +0 -0
- package/src/runtime/obsidian-integration-core.js +255 -17
- package/src/runtime/obsidian-plugin-bridge.js +344 -38
- package/src/runtime/orchestrator.js +0 -0
- package/src/runtime/pi-maestro-core.js +89 -0
- package/src/runtime/preferences.js +79 -0
- package/src/runtime/project-context.js +636 -0
- package/src/runtime/prompt-strategy-core.js +0 -0
- package/src/runtime/quorum-review.js +0 -0
- package/src/runtime/ralph-execution-core.js +0 -0
- package/src/runtime/redaction-gateway.js +218 -19
- package/src/runtime/runtime-state.js +94 -2
- package/src/runtime/schema-migrations.js +162 -0
- package/src/runtime/semantic-recording-core.js +0 -0
- package/src/runtime/signal-hooks.js +13 -0
- package/src/runtime/skills-registry-export.js +96 -8
- package/src/runtime/startup-path.js +0 -0
- package/src/runtime/task-contracts.js +83 -0
- package/src/runtime/universal-plugin-broker-core.js +373 -50
- package/src/runtime/workspace-intelligence-runtime.js +0 -0
- package/src/runtime/workspace-virtualizer.js +0 -0
- package/src/runtime/workspaces.js +0 -0
- package/src/runtime-artifacts.js +0 -0
- package/src/setup-lifecycle.js +359 -0
- package/src/skill-frontmatter.js +78 -0
- package/src/skill-installer.js +226 -71
- package/src/skills.js +309 -31
- package/src/state-sync.js +0 -0
- package/src/test-fixtures.js +543 -0
- package/src/tui/grid.js +67 -0
- package/src/tui/status-grid.js +23 -0
- package/support-bundle.json +114 -0
- package/templates/AGENTS.md +6 -2
- package/templates/catalog-manifest.json +0 -0
- package/templates/model-instructions/core.md +0 -0
- package/templates/model-instructions/release.md +0 -0
- package/templates/model-instructions/security.md +0 -0
- package/templates/quality/ai-quality-rules.yml +37 -0
- package/docs/assets/image/Screenshot(1).png +0 -0
- package/docs/assets/image/Screenshot(2).png +0 -0
- package/docs/assets/image/Screenshot(3).png +0 -0
- package/docs/assets/image/Screenshot(4).png +0 -0
- package/docs/assets/image/Screenshot(5).png +0 -0
- package/docs/assets/image/Screenshot(6).png +0 -0
- package/docs/assets/image/Screenshot(7).png +0 -0
- package/docs/assets/image/Screenshot(8).png +0 -0
- package/docs/assets/image/Screenshot(9).png +0 -0
- package/docs/assets/meta-architect-logo.png +0 -0
- package/docs/assets/meta-architect-logo.svg +0 -8
- package/docs/onboarding.md +0 -81
- package/docs/prompt-guidance-contract.md +0 -17
- package/docs/prompt-guidance-fragments/active-autonomy-core.md +0 -7
- package/docs/skills-publishing.md +0 -255
- package/scripts/postinstall.js +0 -23
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { loadLearningLoopCore, loadLearningRecords } from "../../src/runtime/learning-loop-core.js";
|
|
3
|
+
import {
|
|
4
|
+
loadObsidianVaultIndex,
|
|
5
|
+
loadObsidianVaultOperations,
|
|
6
|
+
} from "../../src/runtime/obsidian-integration-core.js";
|
|
7
|
+
import { resolvePreferences } from "../../src/runtime/preferences.js";
|
|
8
|
+
import { loadProjectIndex } from "../../src/runtime/project-context.js";
|
|
9
|
+
import {
|
|
10
|
+
loadRuntimeHookReceipts,
|
|
11
|
+
loadRuntimeHooksAuditLog,
|
|
12
|
+
loadRuntimeHooksConfig,
|
|
13
|
+
} from "../../src/runtime/signal-hooks.js";
|
|
14
|
+
|
|
15
|
+
const contextResources = [
|
|
16
|
+
"context://project-index",
|
|
17
|
+
"context://learning",
|
|
18
|
+
"context://obsidian",
|
|
19
|
+
"context://hooks",
|
|
20
|
+
"context://freshness",
|
|
21
|
+
"context://commands",
|
|
22
|
+
"context://agent-brief",
|
|
23
|
+
"context://architecture",
|
|
24
|
+
"context://preferences",
|
|
25
|
+
];
|
|
26
|
+
|
|
27
|
+
export function listContextResources() {
|
|
28
|
+
return [...contextResources];
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
async function readOptional(loader, fallback) {
|
|
32
|
+
try {
|
|
33
|
+
return { available: true, data: await loader() };
|
|
34
|
+
} catch (error) {
|
|
35
|
+
if (error?.code === "ENOENT") return { available: false, data: fallback };
|
|
36
|
+
throw error;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
function envelope(resource, result, extra = {}) {
|
|
41
|
+
const freshness = extra.freshness ?? result.data?.freshness ?? null;
|
|
42
|
+
return {
|
|
43
|
+
record_type: `mcp_context:${resource}`,
|
|
44
|
+
authority: "source_truth",
|
|
45
|
+
source: "meta-architect-runtime",
|
|
46
|
+
resource,
|
|
47
|
+
...extra,
|
|
48
|
+
...result,
|
|
49
|
+
context: {
|
|
50
|
+
authority: extra.authority ?? "generated_context",
|
|
51
|
+
source: "meta-architect-runtime",
|
|
52
|
+
freshness,
|
|
53
|
+
provenance: result.data?.sourceFiles?.map((file) => file.path) ?? [],
|
|
54
|
+
},
|
|
55
|
+
quality: result.data?.quality ?? extra.quality ?? null,
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
export async function readContextResource(uri) {
|
|
60
|
+
if (uri === "context://project-index") {
|
|
61
|
+
const result = await readOptional(loadProjectIndex, null);
|
|
62
|
+
return envelope("project-index", result, {
|
|
63
|
+
authority: result.available ? "source_truth" : "missing_source_truth",
|
|
64
|
+
fact_ids: result.data?.facts?.map((fact) => fact.id) ?? [],
|
|
65
|
+
provenance:
|
|
66
|
+
result.data?.facts?.map((fact) => ({ id: fact.id, provenance: fact.provenance })) ?? [],
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
if (uri === "context://learning") {
|
|
71
|
+
const [core, records] = await Promise.all([
|
|
72
|
+
readOptional(loadLearningLoopCore, null),
|
|
73
|
+
readOptional(loadLearningRecords, []),
|
|
74
|
+
]);
|
|
75
|
+
return envelope(
|
|
76
|
+
"learning",
|
|
77
|
+
{
|
|
78
|
+
available: core.available || records.available,
|
|
79
|
+
data: {
|
|
80
|
+
core: core.data,
|
|
81
|
+
records: records.data,
|
|
82
|
+
failure_records: records.data.filter((record) => Boolean(record.failure_state)),
|
|
83
|
+
},
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
authority: "generated_context",
|
|
87
|
+
fact_ids: records.data.flatMap((record) => record.fact_ids ?? []),
|
|
88
|
+
},
|
|
89
|
+
);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
if (uri === "context://obsidian") {
|
|
93
|
+
const [index, operations] = await Promise.all([
|
|
94
|
+
readOptional(loadObsidianVaultIndex, null),
|
|
95
|
+
readOptional(loadObsidianVaultOperations, null),
|
|
96
|
+
]);
|
|
97
|
+
return envelope(
|
|
98
|
+
"obsidian",
|
|
99
|
+
{
|
|
100
|
+
available: index.available || operations.available,
|
|
101
|
+
data: { index: index.data, operations: operations.data },
|
|
102
|
+
},
|
|
103
|
+
{ authority: "vault_note" },
|
|
104
|
+
);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
if (uri === "context://hooks") {
|
|
108
|
+
const [config, audit, receipts] = await Promise.all([
|
|
109
|
+
readOptional(loadRuntimeHooksConfig, null),
|
|
110
|
+
readOptional(loadRuntimeHooksAuditLog, ""),
|
|
111
|
+
readOptional(loadRuntimeHookReceipts, []),
|
|
112
|
+
]);
|
|
113
|
+
return envelope(
|
|
114
|
+
"hooks",
|
|
115
|
+
{
|
|
116
|
+
available: config.available || audit.available,
|
|
117
|
+
data: { config: config.data, audit: audit.data, receipts: receipts.data },
|
|
118
|
+
},
|
|
119
|
+
{ authority: "hook_evidence" },
|
|
120
|
+
);
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
if (
|
|
124
|
+
uri === "context://commands" ||
|
|
125
|
+
uri === "context://agent-brief" ||
|
|
126
|
+
uri === "context://architecture"
|
|
127
|
+
) {
|
|
128
|
+
const relative = uri.slice("context://".length);
|
|
129
|
+
const loader = async () => {
|
|
130
|
+
if (relative === "commands") return readOptional(() => readJsonFile("commands.json"), null);
|
|
131
|
+
return readOptional(() => readTextFile(`${relative}.md`), "");
|
|
132
|
+
};
|
|
133
|
+
const result = await loader();
|
|
134
|
+
const project = await readOptional(loadProjectIndex, null);
|
|
135
|
+
return envelope(relative, result, {
|
|
136
|
+
authority: "generated_context",
|
|
137
|
+
freshness: { status: "derived", stale: false, source: "project-index" },
|
|
138
|
+
quality: project.data?.quality ?? null,
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
if (uri === "context://freshness") {
|
|
143
|
+
const result = await readOptional(loadProjectIndex, null);
|
|
144
|
+
return envelope(
|
|
145
|
+
"freshness",
|
|
146
|
+
{ available: result.available, data: result.data?.freshness ?? null },
|
|
147
|
+
{ authority: "source_truth" },
|
|
148
|
+
);
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
if (uri === "context://preferences") {
|
|
152
|
+
const result = await readOptional(resolvePreferences, {});
|
|
153
|
+
return envelope("preferences", result, { authority: "learning_memory" });
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
throw new Error(`Unknown context resource: ${uri}`);
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
async function readJsonFile(name) {
|
|
160
|
+
const { readJson } = await import("../../src/fs-utils.js");
|
|
161
|
+
return readJson(path.join(process.env.MA_ROOT || process.cwd(), ".ma", "context", name));
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
async function readTextFile(name) {
|
|
165
|
+
const fs = await import("node:fs/promises");
|
|
166
|
+
return fs.readFile(
|
|
167
|
+
path.join(process.env.MA_ROOT || process.cwd(), ".ma", "context", name),
|
|
168
|
+
"utf8",
|
|
169
|
+
);
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
export async function checkContextCapability() {
|
|
173
|
+
const project = await readContextResource("context://project-index");
|
|
174
|
+
return {
|
|
175
|
+
ready: true,
|
|
176
|
+
detail: project.available
|
|
177
|
+
? `project context loaded with ${project.data.sourceFiles?.length ?? 0} source file(s)`
|
|
178
|
+
: "project context has not been generated; run ma setup",
|
|
179
|
+
};
|
|
180
|
+
}
|
package/mcp/local/memory.js
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
|
+
import { loadContinuityGraph, queryContinuityGraph } from "../../src/runtime/continuity-graph.js";
|
|
1
2
|
import {
|
|
2
3
|
loadContinuityIndex,
|
|
3
4
|
loadContinuityNotes,
|
|
4
5
|
storeContinuityNote,
|
|
5
6
|
} from "../../src/runtime/continuity-notes.js";
|
|
7
|
+
import { withMcpWriteGate } from "../../src/runtime/mcp-authority.js";
|
|
6
8
|
|
|
7
|
-
const memoryResources = ["memory://notes", "memory://index"];
|
|
8
|
-
const memoryTools = ["memory.store_note"];
|
|
9
|
+
const memoryResources = ["memory://notes", "memory://index", "memory://graph"];
|
|
10
|
+
const memoryTools = ["memory.store_note", "memory.query_graph"];
|
|
9
11
|
|
|
10
12
|
export function listMemoryResources() {
|
|
11
13
|
return [...memoryResources];
|
|
@@ -22,19 +24,28 @@ export async function readMemoryResource(uri) {
|
|
|
22
24
|
if (uri === "memory://index") {
|
|
23
25
|
return loadContinuityIndex();
|
|
24
26
|
}
|
|
27
|
+
if (uri === "memory://graph") {
|
|
28
|
+
return loadContinuityGraph();
|
|
29
|
+
}
|
|
25
30
|
|
|
26
31
|
throw new Error(`Unknown memory resource: ${uri}`);
|
|
27
32
|
}
|
|
28
33
|
|
|
29
34
|
export async function callMemoryTool(name, args = {}, options = {}) {
|
|
35
|
+
if (name === "memory.query_graph") {
|
|
36
|
+
return queryMemoryGraph(args);
|
|
37
|
+
}
|
|
30
38
|
if (name !== "memory.store_note") {
|
|
31
39
|
throw new Error(`Unknown memory tool: ${name}`);
|
|
32
40
|
}
|
|
33
41
|
|
|
34
|
-
return
|
|
35
|
-
...options,
|
|
36
|
-
|
|
37
|
-
|
|
42
|
+
return withMcpWriteGate({ tool: name, options, payload: args }, (metadata) =>
|
|
43
|
+
storeContinuityNote(args.content ?? "", { ...options, ...metadata }),
|
|
44
|
+
);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export async function queryMemoryGraph(args = {}) {
|
|
48
|
+
return queryContinuityGraph(await loadContinuityGraph(), args);
|
|
38
49
|
}
|
|
39
50
|
|
|
40
51
|
export async function checkMemoryCapability() {
|
package/mcp/local/playbooks.js
CHANGED
|
File without changes
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import fs from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { getRepoRoot } from "../../src/paths.js";
|
|
4
|
+
|
|
5
|
+
const qualityRoot = () => path.join(getRepoRoot(), ".ma", "quality");
|
|
6
|
+
|
|
7
|
+
export const qualityResources = ["quality://violations", "quality://kpis"];
|
|
8
|
+
|
|
9
|
+
export async function readQualityResource(uri) {
|
|
10
|
+
const file =
|
|
11
|
+
uri === "quality://violations"
|
|
12
|
+
? "violations.json"
|
|
13
|
+
: uri === "quality://kpis"
|
|
14
|
+
? "kpis.json"
|
|
15
|
+
: null;
|
|
16
|
+
if (!file) throw new Error(`Unknown quality resource: ${uri}`);
|
|
17
|
+
try {
|
|
18
|
+
return JSON.parse(await fs.readFile(path.join(qualityRoot(), file), "utf8"));
|
|
19
|
+
} catch (error) {
|
|
20
|
+
if (error.code === "ENOENT") return [];
|
|
21
|
+
throw error;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export async function queryQualityStatus() {
|
|
26
|
+
const [violations, kpis] = await Promise.all([
|
|
27
|
+
readQualityResource("quality://violations"),
|
|
28
|
+
readQualityResource("quality://kpis"),
|
|
29
|
+
]);
|
|
30
|
+
return {
|
|
31
|
+
violations,
|
|
32
|
+
kpis,
|
|
33
|
+
passed:
|
|
34
|
+
violations.length > 0 &&
|
|
35
|
+
kpis.length > 0 &&
|
|
36
|
+
violations.every((record) => record.violations?.length === 0) &&
|
|
37
|
+
kpis.every((record) => record.kpis?.qualityScore >= 60),
|
|
38
|
+
};
|
|
39
|
+
}
|
package/mcp/local/state.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { appendDecision } from "../../src/decision-log.js";
|
|
2
2
|
import { loadManagerRunRegistryOrDefault } from "../../src/runtime/maestro-manager.js";
|
|
3
|
+
import { withMcpWriteGate } from "../../src/runtime/mcp-authority.js";
|
|
3
4
|
import { createRuntimeSummary, loadRuntimeSnapshot } from "../../src/runtime/runtime-state.js";
|
|
4
5
|
import { loadCombinedState, syncStatusUpdates } from "../../src/state-sync.js";
|
|
5
6
|
|
|
@@ -45,15 +46,18 @@ export async function readStateResource(uri) {
|
|
|
45
46
|
}
|
|
46
47
|
|
|
47
48
|
export async function callStateTool(name, args = {}, options = {}) {
|
|
48
|
-
const localOptions = { ...options, actor: "local-capability:_state" };
|
|
49
49
|
if (name === "state.sync_release_status") {
|
|
50
50
|
const statusUpdates = args.statusUpdates ?? args;
|
|
51
|
-
return
|
|
51
|
+
return withMcpWriteGate({ tool: name, options, payload: statusUpdates }, (metadata) =>
|
|
52
|
+
syncStatusUpdates(statusUpdates, metadata),
|
|
53
|
+
);
|
|
52
54
|
}
|
|
53
55
|
|
|
54
56
|
if (name === "state.append_decision") {
|
|
55
57
|
const entry = args.entry ?? args;
|
|
56
|
-
return
|
|
58
|
+
return withMcpWriteGate({ tool: name, options, payload: entry }, (metadata) =>
|
|
59
|
+
appendDecision(entry, metadata),
|
|
60
|
+
);
|
|
57
61
|
}
|
|
58
62
|
|
|
59
63
|
throw new Error(`Unknown _state tool: ${name}`);
|
package/mcp/local/team-run.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import fs from "node:fs/promises";
|
|
2
|
+
import { withMcpWriteGate } from "../../src/runtime/mcp-authority.js";
|
|
2
3
|
import {
|
|
3
4
|
controlTask,
|
|
4
5
|
getTask,
|
|
@@ -50,9 +51,11 @@ export async function readTeamRunResource(uri) {
|
|
|
50
51
|
}
|
|
51
52
|
|
|
52
53
|
export async function callTeamRunTool(name, args = {}, options = {}) {
|
|
53
|
-
const localOptions = { ...options, actor: "local-capability:team_run" };
|
|
54
54
|
if (name === "team_run.submit_task") {
|
|
55
|
-
|
|
55
|
+
const task = args.task ?? args;
|
|
56
|
+
return withMcpWriteGate({ tool: name, options, payload: task }, (metadata) =>
|
|
57
|
+
submitTask(task, metadata),
|
|
58
|
+
);
|
|
56
59
|
}
|
|
57
60
|
if (name === "team_run.get_status") {
|
|
58
61
|
return getTask(args.taskId);
|
|
@@ -64,7 +67,9 @@ export async function callTeamRunTool(name, args = {}, options = {}) {
|
|
|
64
67
|
return waitForTask(args.taskId, args);
|
|
65
68
|
}
|
|
66
69
|
if (name === "team_run.control_task") {
|
|
67
|
-
return
|
|
70
|
+
return withMcpWriteGate({ tool: name, options, payload: args }, (metadata) =>
|
|
71
|
+
controlTask(args.taskId, args.action, metadata),
|
|
72
|
+
);
|
|
68
73
|
}
|
|
69
74
|
|
|
70
75
|
throw new Error(`Unknown team_run tool: ${name}`);
|
package/mcp/local/trace.js
CHANGED
|
File without changes
|
|
@@ -51,6 +51,15 @@
|
|
|
51
51
|
"module": "./local/playbooks.js",
|
|
52
52
|
"readinessCheck": "checkPlaybooksCapability",
|
|
53
53
|
"seededByBootstrap": true
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"kind": "local-capability",
|
|
57
|
+
"capability": "context",
|
|
58
|
+
"transport": "inproc",
|
|
59
|
+
"module": "./local/context.js",
|
|
60
|
+
"readinessCheck": "checkContextCapability",
|
|
61
|
+
"seededByBootstrap": true,
|
|
62
|
+
"authorityMode": "read-only-evidence"
|
|
54
63
|
}
|
|
55
64
|
]
|
|
56
65
|
}
|
|
File without changes
|
package/mcp/servers.json
CHANGED
|
File without changes
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jstn-sdk/ma",
|
|
3
|
-
"version": "0.1
|
|
3
|
+
"version": "0.14.1",
|
|
4
4
|
"description": "Codex-native skills system for architecture, evidence, review, and gated build guidance.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "JustineDevs",
|
|
@@ -9,6 +9,11 @@
|
|
|
9
9
|
"type": "git",
|
|
10
10
|
"url": "git+https://github.com/JustineDevs/meta-architect.git"
|
|
11
11
|
},
|
|
12
|
+
"pi": {
|
|
13
|
+
"skills": [
|
|
14
|
+
"./skills"
|
|
15
|
+
]
|
|
16
|
+
},
|
|
12
17
|
"bugs": {
|
|
13
18
|
"url": "https://github.com/JustineDevs/meta-architect/issues"
|
|
14
19
|
},
|
|
@@ -40,9 +45,23 @@
|
|
|
40
45
|
"templates/",
|
|
41
46
|
"sprint/",
|
|
42
47
|
"skills/",
|
|
43
|
-
"docs/",
|
|
48
|
+
"docs/README.md",
|
|
49
|
+
"docs/getting-started.md",
|
|
50
|
+
"docs/skills.md",
|
|
51
|
+
"docs/mcp-setup.md",
|
|
52
|
+
"docs/installed-sdk.md",
|
|
53
|
+
"docs/release-spec.md",
|
|
54
|
+
"docs/quality.md",
|
|
55
|
+
"docs/codex-integration.md",
|
|
56
|
+
"docs/autonomous-tasks.md",
|
|
57
|
+
"docs/vendor-plugin-publishing.md",
|
|
58
|
+
"docs/assets/banner.png",
|
|
59
|
+
"docs/reference/",
|
|
60
|
+
"docs/qa/",
|
|
44
61
|
"data/",
|
|
45
62
|
"scripts/",
|
|
63
|
+
"schemas/",
|
|
64
|
+
"support-bundle.json",
|
|
46
65
|
"index.js",
|
|
47
66
|
"README.md",
|
|
48
67
|
"DEMO.md",
|
|
@@ -58,8 +77,11 @@
|
|
|
58
77
|
},
|
|
59
78
|
"scripts": {
|
|
60
79
|
"prepare": "husky",
|
|
61
|
-
"
|
|
62
|
-
"test": "node --test --test-concurrency=1",
|
|
80
|
+
"prepack": "node ./scripts/prepack.js",
|
|
81
|
+
"test": "node --test --test-concurrency=1 test/*.test.js",
|
|
82
|
+
"test:disk": "node --test --test-concurrency=1 test/test-fixtures.test.js",
|
|
83
|
+
"fixtures:cleanup": "bash ./scripts/cleanup-test-fixtures.sh",
|
|
84
|
+
"demo:smoke": "node ./scripts/demo-smoke.js",
|
|
63
85
|
"status": "node ./bin/ma.js status",
|
|
64
86
|
"linux:packages:build": "node ./scripts/build-linux-packages.mjs",
|
|
65
87
|
"linux:packages:smoke": "node ./scripts/linux-package-smoke.mjs",
|
|
@@ -69,15 +91,21 @@
|
|
|
69
91
|
"release:advance": "node ./scripts/release-sync.js --force --bump patch",
|
|
70
92
|
"release:verify": "node ./scripts/release-verify.js",
|
|
71
93
|
"release:assets": "node ./.github/scripts/validate-release-assets.js",
|
|
72
|
-
"release:
|
|
94
|
+
"release:assets:generate": "node ./.github/scripts/validate-release-assets.js --generate",
|
|
95
|
+
"release:check": "npm run release:verify && npm run skills:manifest && npm run plugin:sync && npm run plugin:build:all && npm run skills:validate && npm run plugin:verify && npm run skills:pack && npm run check && npm test && npm run pack:inspect",
|
|
73
96
|
"skills:manifest": "node ./scripts/skills-manifest.js",
|
|
74
97
|
"skills:validate": "node ./scripts/skills-validate.js",
|
|
75
98
|
"skills:install": "node ./scripts/skills-install.js",
|
|
76
99
|
"skills:pack": "node ./scripts/skills-pack.js",
|
|
77
100
|
"plugin:sync": "node ./scripts/plugin-sync.js",
|
|
78
101
|
"plugin:verify": "node ./scripts/plugin-sync.js --check",
|
|
102
|
+
"plugin:build": "node ./scripts/plugin-build.js",
|
|
103
|
+
"plugin:build:all": "node ./scripts/plugin-build.js --targets all --output ./dist/vendor-plugins",
|
|
104
|
+
"plugin:publish": "node ./scripts/plugin-publish.js",
|
|
79
105
|
"pack:inspect": "npm pack --dry-run --ignore-scripts --cache ./.npm-cache",
|
|
80
|
-
"
|
|
106
|
+
"package:size": "node ./scripts/package-size-check.mjs",
|
|
107
|
+
"package:doctor": "node ./scripts/doctor.js",
|
|
108
|
+
"release:doctor": "npm run package:doctor",
|
|
81
109
|
"lint": "biome lint .",
|
|
82
110
|
"format": "biome format .",
|
|
83
111
|
"check": "biome check ."
|
|
@@ -89,5 +117,8 @@
|
|
|
89
117
|
"devDependencies": {
|
|
90
118
|
"@biomejs/biome": "^2.4.13",
|
|
91
119
|
"husky": "^9.1.7"
|
|
120
|
+
},
|
|
121
|
+
"dependencies": {
|
|
122
|
+
"@jstn-sdk/agents": "0.1.0"
|
|
92
123
|
}
|
|
93
124
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "meta-architect",
|
|
3
3
|
"displayName": "Meta-Architect",
|
|
4
|
-
"version": "0.1
|
|
4
|
+
"version": "0.14.1",
|
|
5
5
|
"description": "Programmatic architecture and verified engineering skills for Codex-native workflows.",
|
|
6
6
|
"entry": "./README.md",
|
|
7
7
|
"skillsDir": "./skills"
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "meta-architect",
|
|
3
|
+
"description": "Meta-Architect gated workflow skills for Claude Code.",
|
|
4
|
+
"version": "0.14.1",
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "JustineDevs",
|
|
7
|
+
"url": "https://github.com/JustineDevs"
|
|
8
|
+
},
|
|
9
|
+
"homepage": "https://github.com/JustineDevs/meta-architect",
|
|
10
|
+
"repository": "https://github.com/JustineDevs/meta-architect.git",
|
|
11
|
+
"license": "MIT"
|
|
12
|
+
}
|
|
@@ -48,11 +48,22 @@ Use the core repo when you want to develop Meta-Architect itself. Use the plugin
|
|
|
48
48
|
|
|
49
49
|
The plugin-facing bundle should be consumed alongside the repository’s documented packaging/install flow.
|
|
50
50
|
|
|
51
|
+
### Claude Code marketplace
|
|
52
|
+
|
|
53
|
+
This repository is the hosted marketplace. In Claude Code, add it and install the existing plugin:
|
|
54
|
+
|
|
55
|
+
```text
|
|
56
|
+
/plugin marketplace add JustineDevs/meta-architect
|
|
57
|
+
/plugin install meta-architect@meta-architect
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
The same plugin can be tested locally with `claude --plugin-dir ./plugins/meta-architect`.
|
|
61
|
+
|
|
51
62
|
Recommended CLI install for macOS, Linux, WSL, and Git-Bash:
|
|
52
63
|
|
|
53
64
|
```bash
|
|
54
65
|
# One-line install (POSIX shells only; use WSL/Git-Bash on Windows)
|
|
55
|
-
curl -
|
|
66
|
+
curl -fsSLo install.sh https://cdn.jsdelivr.net/gh/JustineDevs/meta-architect@latest/scripts/install.sh && curl -fsSLo install.sh.sha256 https://cdn.jsdelivr.net/gh/JustineDevs/meta-architect@latest/scripts/install.sh.sha256 && sed 's#scripts/install.sh#install.sh#' install.sh.sha256 | sha256sum -c - && sh install.sh
|
|
56
67
|
```
|
|
57
68
|
|
|
58
69
|
Canonical package/runtime path:
|
|
@@ -138,7 +149,7 @@ When consuming the plugin:
|
|
|
138
149
|
The plugin version should track the release scope of the core repo.
|
|
139
150
|
|
|
140
151
|
For this repository:
|
|
141
|
-
- plugin scope is aligned to Meta-Architect `v0.1
|
|
152
|
+
- plugin scope is aligned to Meta-Architect `v0.14.1`
|
|
142
153
|
- any breaking contract change should be versioned intentionally
|
|
143
154
|
|
|
144
155
|
The plugin is one distribution surface of the same product, not a separate product line.
|
|
@@ -151,4 +162,5 @@ The plugin is one distribution surface of the same product, not a separate produ
|
|
|
151
162
|
- [docs/mcp-setup.md](../../docs/mcp-setup.md)
|
|
152
163
|
- [.app.json](./.app.json)
|
|
153
164
|
- [.codex-plugin/plugin.json](./.codex-plugin/plugin.json)
|
|
165
|
+
- [.claude-plugin/plugin.json](./.claude-plugin/plugin.json)
|
|
154
166
|
- [.mcp.json](./.mcp.json)
|