@cstack-protocol/pingala 1.0.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/.agent/CSD.md +39 -0
- package/.agent/MANIFEST.md +4 -0
- package/.agent/MANIFEST.md.template +4 -0
- package/.agent/agent-contractor.md +45 -0
- package/.agent/architecture/consent-model-fsm.md +77 -0
- package/.agent/architecture/governor-maturity-fsm.md +101 -0
- package/.agent/architecture/governor-validation-fsm.md +106 -0
- package/.agent/architecture/humanized-audit-fsm.md +76 -0
- package/.agent/architecture/pingala-csi-fsm.md +81 -0
- package/.agent/architecture.md +34 -0
- package/.agent/behavior.md +29 -0
- package/.agent/compute.md +32 -0
- package/.agent/consent-prompts.md +41 -0
- package/.agent/governance.yaml +5 -0
- package/.agent/identity.md +29 -0
- package/.agent/knowledge-lattice.json +96 -0
- package/.agent/knowledge-lattice.md +53 -0
- package/.agent/lattice-viz.html +157 -0
- package/.agent/mission.md +37 -0
- package/.agent/pairing-protocol.md +89 -0
- package/.agent/pairing.csp +108 -0
- package/.agent/personas/reflective-operator.md +67 -0
- package/.agent/personas/research.md +62 -0
- package/.agent/pingala.md +47 -0
- package/.agent/roadmap.md +56 -0
- package/.agent/scripts/lattice-extract.py +100 -0
- package/.agent/scripts/sync-agents.sh +82 -0
- package/.agent/scripts/vault-ingest.py +80 -0
- package/.agent/seo-strategy.md +71 -0
- package/.agent/skills/agent-orchestrator/SKILL.md +22 -0
- package/.agent/skills/agent-orchestrator/scripts/sync-agents.sh +61 -0
- package/.agent/skills/knowledge-lattice/SKILL.md +23 -0
- package/.agent/skills/knowledge-lattice/scripts/lattice-extract.py +107 -0
- package/.agent/skills/resource-vault/SKILL.md +30 -0
- package/.agent/skills/resource-vault/scripts/vault-ingest.py +80 -0
- package/.agent/skills/sites-integrity/SKILL.md +28 -0
- package/.agent/skills/stack-auditor/SKILL.md +25 -0
- package/.agent/sources.md +20 -0
- package/.agent/stack-auditor.md +47 -0
- package/.agent/standards.md +36 -0
- package/.agent/strategy.md +65 -0
- package/.agent/vault-schema.md +53 -0
- package/.agent/voice.md +27 -0
- package/.agent/workflows/sync-agents.md +14 -0
- package/.env.example +5 -0
- package/.env.production +3 -0
- package/DISTRIBUTION-PLAN.md +33 -0
- package/HOSTED_SETUP.md +54 -0
- package/LANDING_PAGE_DESIGN.md +46 -0
- package/MANUAL_VERCEL_STEPS.md +39 -0
- package/PRODUCT-ROADMAP.md +241 -0
- package/PROVISIONING_GUIDE.md +39 -0
- package/README.md +38 -0
- package/ROADMAP.md +21 -0
- package/SYNC-ENGINE-SPEC.md +257 -0
- package/build/core/531-protocol.d.ts +26 -0
- package/build/core/531-protocol.js +87 -0
- package/build/core/531-protocol.js.map +1 -0
- package/build/core/531-rule.d.ts +26 -0
- package/build/core/531-rule.js +106 -0
- package/build/core/531-rule.js.map +1 -0
- package/build/core/auth.d.ts +1 -0
- package/build/core/auth.js +24 -0
- package/build/core/auth.js.map +1 -0
- package/build/core/consent-manager.d.ts +17 -0
- package/build/core/consent-manager.js +104 -0
- package/build/core/consent-manager.js.map +1 -0
- package/build/core/csp.d.ts +12 -0
- package/build/core/csp.js +20 -0
- package/build/core/csp.js.map +1 -0
- package/build/core/engagement-analyzer.d.ts +42 -0
- package/build/core/engagement-analyzer.js +71 -0
- package/build/core/engagement-analyzer.js.map +1 -0
- package/build/core/governor.d.ts +106 -0
- package/build/core/governor.js +405 -0
- package/build/core/governor.js.map +1 -0
- package/build/core/life-area-mapper.d.ts +39 -0
- package/build/core/life-area-mapper.js +73 -0
- package/build/core/life-area-mapper.js.map +1 -0
- package/build/core/methodology.d.ts +39 -0
- package/build/core/methodology.js +164 -0
- package/build/core/methodology.js.map +1 -0
- package/build/core/pingala.d.ts +31 -0
- package/build/core/pingala.js +56 -0
- package/build/core/pingala.js.map +1 -0
- package/build/core/sdk-adapter.d.ts +6 -0
- package/build/core/sdk-adapter.js +33 -0
- package/build/core/sdk-adapter.js.map +1 -0
- package/build/cs-agent-core/sdk/index.d.ts +6 -0
- package/build/cs-agent-core/sdk/index.js +18 -0
- package/build/cs-agent-core/sdk/index.js.map +1 -0
- package/build/cs-agent-core/sdk/patterns/index.d.ts +3 -0
- package/build/cs-agent-core/sdk/patterns/index.js +37 -0
- package/build/cs-agent-core/sdk/patterns/index.js.map +1 -0
- package/build/cs-agent-core/sdk/patterns/registry.d.ts +4 -0
- package/build/cs-agent-core/sdk/patterns/registry.js +80 -0
- package/build/cs-agent-core/sdk/patterns/registry.js.map +1 -0
- package/build/cs-agent-core/sdk/telemetry/buffer.d.ts +9 -0
- package/build/cs-agent-core/sdk/telemetry/buffer.js +47 -0
- package/build/cs-agent-core/sdk/telemetry/buffer.js.map +1 -0
- package/build/cs-agent-core/sdk/telemetry/scrubber.d.ts +3 -0
- package/build/cs-agent-core/sdk/telemetry/scrubber.js +13 -0
- package/build/cs-agent-core/sdk/telemetry/scrubber.js.map +1 -0
- package/build/cs-agent-core/sdk/telemetry/types.d.ts +50 -0
- package/build/cs-agent-core/sdk/telemetry/types.js +2 -0
- package/build/cs-agent-core/sdk/telemetry/types.js.map +1 -0
- package/build/cs-agent-core/sdk/types/decision.d.ts +18 -0
- package/build/cs-agent-core/sdk/types/decision.js +2 -0
- package/build/cs-agent-core/sdk/types/decision.js.map +1 -0
- package/build/cs-agent-core/sdk/types/index.d.ts +4 -0
- package/build/cs-agent-core/sdk/types/index.js +5 -0
- package/build/cs-agent-core/sdk/types/index.js.map +1 -0
- package/build/cs-agent-core/sdk/types/pattern.d.ts +17 -0
- package/build/cs-agent-core/sdk/types/pattern.js +2 -0
- package/build/cs-agent-core/sdk/types/pattern.js.map +1 -0
- package/build/cs-agent-core/sdk/types/stack.d.ts +8 -0
- package/build/cs-agent-core/sdk/types/stack.js +2 -0
- package/build/cs-agent-core/sdk/types/stack.js.map +1 -0
- package/build/cs-agent-core/sdk/types/tool.d.ts +9 -0
- package/build/cs-agent-core/sdk/types/tool.js +2 -0
- package/build/cs-agent-core/sdk/types/tool.js.map +1 -0
- package/build/cs-agent-core/sdk/validator/csi.d.ts +2 -0
- package/build/cs-agent-core/sdk/validator/csi.js +24 -0
- package/build/cs-agent-core/sdk/validator/csi.js.map +1 -0
- package/build/cs-agent-core/sdk/validator/index.d.ts +2 -0
- package/build/cs-agent-core/sdk/validator/index.js +3 -0
- package/build/cs-agent-core/sdk/validator/index.js.map +1 -0
- package/build/cs-agent-core/sdk/validator/rules/geometry.d.ts +11 -0
- package/build/cs-agent-core/sdk/validator/rules/geometry.js +22 -0
- package/build/cs-agent-core/sdk/validator/rules/geometry.js.map +1 -0
- package/build/cs-agent-core/sdk/validator/validate.d.ts +2 -0
- package/build/cs-agent-core/sdk/validator/validate.js +46 -0
- package/build/cs-agent-core/sdk/validator/validate.js.map +1 -0
- package/build/index.d.ts +2 -0
- package/build/index.js +444 -0
- package/build/index.js.map +1 -0
- package/build/pingala-mcp/src/core/531-rule.d.ts +26 -0
- package/build/pingala-mcp/src/core/531-rule.js +96 -0
- package/build/pingala-mcp/src/core/531-rule.js.map +1 -0
- package/build/pingala-mcp/src/core/auth.d.ts +1 -0
- package/build/pingala-mcp/src/core/auth.js +15 -0
- package/build/pingala-mcp/src/core/auth.js.map +1 -0
- package/build/pingala-mcp/src/core/consent-manager.d.ts +17 -0
- package/build/pingala-mcp/src/core/consent-manager.js +104 -0
- package/build/pingala-mcp/src/core/consent-manager.js.map +1 -0
- package/build/pingala-mcp/src/core/csp.d.ts +12 -0
- package/build/pingala-mcp/src/core/csp.js +20 -0
- package/build/pingala-mcp/src/core/csp.js.map +1 -0
- package/build/pingala-mcp/src/core/engagement-analyzer.d.ts +42 -0
- package/build/pingala-mcp/src/core/engagement-analyzer.js +71 -0
- package/build/pingala-mcp/src/core/engagement-analyzer.js.map +1 -0
- package/build/pingala-mcp/src/core/governor.d.ts +104 -0
- package/build/pingala-mcp/src/core/governor.js +359 -0
- package/build/pingala-mcp/src/core/governor.js.map +1 -0
- package/build/pingala-mcp/src/core/life-area-mapper.d.ts +39 -0
- package/build/pingala-mcp/src/core/life-area-mapper.js +73 -0
- package/build/pingala-mcp/src/core/life-area-mapper.js.map +1 -0
- package/build/pingala-mcp/src/core/methodology.d.ts +39 -0
- package/build/pingala-mcp/src/core/methodology.js +164 -0
- package/build/pingala-mcp/src/core/methodology.js.map +1 -0
- package/build/pingala-mcp/src/core/pingala.d.ts +25 -0
- package/build/pingala-mcp/src/core/pingala.js +56 -0
- package/build/pingala-mcp/src/core/pingala.js.map +1 -0
- package/build/pingala-mcp/src/core/sdk-adapter.d.ts +6 -0
- package/build/pingala-mcp/src/core/sdk-adapter.js +33 -0
- package/build/pingala-mcp/src/core/sdk-adapter.js.map +1 -0
- package/build/pingala-mcp/src/index.d.ts +1 -0
- package/build/pingala-mcp/src/index.js +221 -0
- package/build/pingala-mcp/src/index.js.map +1 -0
- package/build/pingala-mcp/src/test-l3.d.ts +1 -0
- package/build/pingala-mcp/src/test-l3.js +35 -0
- package/build/pingala-mcp/src/test-l3.js.map +1 -0
- package/build/pingala-mcp/src/tools/audit-workspace.d.ts +16 -0
- package/build/pingala-mcp/src/tools/audit-workspace.js +39 -0
- package/build/pingala-mcp/src/tools/audit-workspace.js.map +1 -0
- package/build/pingala-mcp/src/tools/calculate-csi.d.ts +24 -0
- package/build/pingala-mcp/src/tools/calculate-csi.js +29 -0
- package/build/pingala-mcp/src/tools/calculate-csi.js.map +1 -0
- package/build/pingala-mcp/src/tools/cs-audit.d.ts +54 -0
- package/build/pingala-mcp/src/tools/cs-audit.js +310 -0
- package/build/pingala-mcp/src/tools/cs-audit.js.map +1 -0
- package/build/pingala-mcp/src/tools/get-governance-context.d.ts +11 -0
- package/build/pingala-mcp/src/tools/get-governance-context.js +16 -0
- package/build/pingala-mcp/src/tools/get-governance-context.js.map +1 -0
- package/build/pingala-mcp/src/tools/validate-stack-change.d.ts +41 -0
- package/build/pingala-mcp/src/tools/validate-stack-change.js +35 -0
- package/build/pingala-mcp/src/tools/validate-stack-change.js.map +1 -0
- package/build/sdk/index.d.ts +6 -0
- package/build/sdk/index.js +18 -0
- package/build/sdk/index.js.map +1 -0
- package/build/sdk/patterns/index.d.ts +3 -0
- package/build/sdk/patterns/index.js +37 -0
- package/build/sdk/patterns/index.js.map +1 -0
- package/build/sdk/patterns/registry.d.ts +4 -0
- package/build/sdk/patterns/registry.js +80 -0
- package/build/sdk/patterns/registry.js.map +1 -0
- package/build/sdk/telemetry/buffer.d.ts +9 -0
- package/build/sdk/telemetry/buffer.js +47 -0
- package/build/sdk/telemetry/buffer.js.map +1 -0
- package/build/sdk/telemetry/scrubber.d.ts +3 -0
- package/build/sdk/telemetry/scrubber.js +13 -0
- package/build/sdk/telemetry/scrubber.js.map +1 -0
- package/build/sdk/telemetry/types.d.ts +50 -0
- package/build/sdk/telemetry/types.js +2 -0
- package/build/sdk/telemetry/types.js.map +1 -0
- package/build/sdk/types/decision.d.ts +18 -0
- package/build/sdk/types/decision.js +2 -0
- package/build/sdk/types/decision.js.map +1 -0
- package/build/sdk/types/index.d.ts +4 -0
- package/build/sdk/types/index.js +5 -0
- package/build/sdk/types/index.js.map +1 -0
- package/build/sdk/types/pattern.d.ts +17 -0
- package/build/sdk/types/pattern.js +2 -0
- package/build/sdk/types/pattern.js.map +1 -0
- package/build/sdk/types/stack.d.ts +8 -0
- package/build/sdk/types/stack.js +2 -0
- package/build/sdk/types/stack.js.map +1 -0
- package/build/sdk/types/tool.d.ts +9 -0
- package/build/sdk/types/tool.js +2 -0
- package/build/sdk/types/tool.js.map +1 -0
- package/build/sdk/validator/csi.d.ts +2 -0
- package/build/sdk/validator/csi.js +24 -0
- package/build/sdk/validator/csi.js.map +1 -0
- package/build/sdk/validator/index.d.ts +2 -0
- package/build/sdk/validator/index.js +3 -0
- package/build/sdk/validator/index.js.map +1 -0
- package/build/sdk/validator/rules/geometry.d.ts +11 -0
- package/build/sdk/validator/rules/geometry.js +22 -0
- package/build/sdk/validator/rules/geometry.js.map +1 -0
- package/build/sdk/validator/validate.d.ts +2 -0
- package/build/sdk/validator/validate.js +46 -0
- package/build/sdk/validator/validate.js.map +1 -0
- package/build/src/core/531-rule.d.ts +26 -0
- package/build/src/core/531-rule.js +96 -0
- package/build/src/core/531-rule.js.map +1 -0
- package/build/src/core/auth.d.ts +1 -0
- package/build/src/core/auth.js +15 -0
- package/build/src/core/auth.js.map +1 -0
- package/build/src/core/consent-manager.d.ts +17 -0
- package/build/src/core/consent-manager.js +104 -0
- package/build/src/core/consent-manager.js.map +1 -0
- package/build/src/core/csp.d.ts +12 -0
- package/build/src/core/csp.js +20 -0
- package/build/src/core/csp.js.map +1 -0
- package/build/src/core/engagement-analyzer.d.ts +42 -0
- package/build/src/core/engagement-analyzer.js +71 -0
- package/build/src/core/engagement-analyzer.js.map +1 -0
- package/build/src/core/governor.d.ts +104 -0
- package/build/src/core/governor.js +371 -0
- package/build/src/core/governor.js.map +1 -0
- package/build/src/core/life-area-mapper.d.ts +39 -0
- package/build/src/core/life-area-mapper.js +73 -0
- package/build/src/core/life-area-mapper.js.map +1 -0
- package/build/src/core/methodology.d.ts +39 -0
- package/build/src/core/methodology.js +164 -0
- package/build/src/core/methodology.js.map +1 -0
- package/build/src/core/pingala.d.ts +25 -0
- package/build/src/core/pingala.js +56 -0
- package/build/src/core/pingala.js.map +1 -0
- package/build/src/core/sdk-adapter.d.ts +8 -0
- package/build/src/core/sdk-adapter.js +34 -0
- package/build/src/core/sdk-adapter.js.map +1 -0
- package/build/src/index.d.ts +2 -0
- package/build/src/index.js +333 -0
- package/build/src/index.js.map +1 -0
- package/build/src/test-l3.d.ts +1 -0
- package/build/src/test-l3.js +35 -0
- package/build/src/test-l3.js.map +1 -0
- package/build/src/tools/audit-workspace.d.ts +16 -0
- package/build/src/tools/audit-workspace.js +39 -0
- package/build/src/tools/audit-workspace.js.map +1 -0
- package/build/src/tools/calculate-csi.d.ts +24 -0
- package/build/src/tools/calculate-csi.js +29 -0
- package/build/src/tools/calculate-csi.js.map +1 -0
- package/build/src/tools/cs-audit.d.ts +54 -0
- package/build/src/tools/cs-audit.js +310 -0
- package/build/src/tools/cs-audit.js.map +1 -0
- package/build/src/tools/get-governance-context.d.ts +11 -0
- package/build/src/tools/get-governance-context.js +16 -0
- package/build/src/tools/get-governance-context.js.map +1 -0
- package/build/src/tools/validate-stack-change.d.ts +41 -0
- package/build/src/tools/validate-stack-change.js +35 -0
- package/build/src/tools/validate-stack-change.js.map +1 -0
- package/build/test-l3.d.ts +1 -0
- package/build/test-l3.js +35 -0
- package/build/test-l3.js.map +1 -0
- package/build/tools/analyze-stack.d.ts +40 -0
- package/build/tools/analyze-stack.js +121 -0
- package/build/tools/analyze-stack.js.map +1 -0
- package/build/tools/audit-workspace.d.ts +16 -0
- package/build/tools/audit-workspace.js +39 -0
- package/build/tools/audit-workspace.js.map +1 -0
- package/build/tools/calculate-csi.d.ts +26 -0
- package/build/tools/calculate-csi.js +30 -0
- package/build/tools/calculate-csi.js.map +1 -0
- package/build/tools/cs-audit.d.ts +43 -0
- package/build/tools/cs-audit.js +330 -0
- package/build/tools/cs-audit.js.map +1 -0
- package/build/tools/get-governance-context.d.ts +11 -0
- package/build/tools/get-governance-context.js +61 -0
- package/build/tools/get-governance-context.js.map +1 -0
- package/build/tools/validate-stack-change.d.ts +41 -0
- package/build/tools/validate-stack-change.js +54 -0
- package/build/tools/validate-stack-change.js.map +1 -0
- package/package.json +34 -0
- package/scripts/cloud-bridge.js +62 -0
- package/scripts/generate-token.js +13 -0
- package/src/core/531-rule.ts +148 -0
- package/src/core/auth.ts +42 -0
- package/src/core/consent-manager.ts +134 -0
- package/src/core/csp.ts +40 -0
- package/src/core/engagement-analyzer.ts +122 -0
- package/src/core/governor.ts +522 -0
- package/src/core/life-area-mapper.ts +138 -0
- package/src/core/methodology.ts +256 -0
- package/src/core/pingala.ts +77 -0
- package/src/core/sdk-adapter.ts +52 -0
- package/src/index.ts +562 -0
- package/src/test-l3.ts +45 -0
- package/src/tools/analyze-stack.ts +153 -0
- package/src/tools/audit-workspace.ts +50 -0
- package/src/tools/calculate-csi.ts +38 -0
- package/src/tools/cs-audit.ts +384 -0
- package/src/tools/get-governance-context.ts +69 -0
- package/src/tools/validate-stack-change.ts +71 -0
- package/src/types.d.ts +2 -0
- package/tsconfig.json +40 -0
- package/vercel.json +15 -0
package/build/index.js
ADDED
|
@@ -0,0 +1,444 @@
|
|
|
1
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
import { SSEServerTransport } from "@modelcontextprotocol/sdk/server/sse.js";
|
|
3
|
+
import { csAuditTool } from "./tools/cs-audit.js";
|
|
4
|
+
import { validateStackChangeTool } from "./tools/validate-stack-change.js";
|
|
5
|
+
import { getGovernanceContextTool } from "./tools/get-governance-context.js";
|
|
6
|
+
import { calculateCsiTool } from "./tools/calculate-csi.js";
|
|
7
|
+
import { analyzeStackTool } from "./tools/analyze-stack.js";
|
|
8
|
+
import { MethodologyLoader } from "./core/methodology.js";
|
|
9
|
+
import { Governor } from "./core/governor.js";
|
|
10
|
+
import { PingalaEngine } from "./core/pingala.js";
|
|
11
|
+
import { initPingalaTelemetry, getRegistryMode } from "./core/sdk-adapter.js";
|
|
12
|
+
import process from "node:process";
|
|
13
|
+
import { z } from "zod";
|
|
14
|
+
import express from "express";
|
|
15
|
+
import cors from "cors";
|
|
16
|
+
try {
|
|
17
|
+
process.loadEnvFile();
|
|
18
|
+
}
|
|
19
|
+
catch (e) {
|
|
20
|
+
}
|
|
21
|
+
const server = new McpServer({
|
|
22
|
+
name: "cstack-mcp",
|
|
23
|
+
version: "0.4.5-cloud",
|
|
24
|
+
});
|
|
25
|
+
try {
|
|
26
|
+
initPingalaTelemetry('contributor');
|
|
27
|
+
}
|
|
28
|
+
catch (e) {
|
|
29
|
+
console.error("[Pingala] Telemetry initialization failed (likely missing SDK)", e);
|
|
30
|
+
}
|
|
31
|
+
const rules = MethodologyLoader.load531Rules();
|
|
32
|
+
const protocolDesc = rules.rawDescription || "1 Anchor, 3 Active, 5 Supporting";
|
|
33
|
+
server.tool(csAuditTool.name, `${csAuditTool.description} (Protocol Rule: ${protocolDesc})`, csAuditTool.schema, csAuditTool.handler);
|
|
34
|
+
server.tool(validateStackChangeTool.name, validateStackChangeTool.description, validateStackChangeTool.schema, validateStackChangeTool.handler);
|
|
35
|
+
server.tool(getGovernanceContextTool.name, getGovernanceContextTool.description, getGovernanceContextTool.schema, getGovernanceContextTool.handler);
|
|
36
|
+
server.tool(calculateCsiTool.name, calculateCsiTool.description, calculateCsiTool.schema, calculateCsiTool.handler);
|
|
37
|
+
server.tool(analyzeStackTool.name, analyzeStackTool.description, analyzeStackTool.schema, analyzeStackTool.handler);
|
|
38
|
+
server.resource("current-stack", "cstack://stack-map/current", {
|
|
39
|
+
description: "The current 5:3:1 hierarchy of tools",
|
|
40
|
+
mimeType: "application/json"
|
|
41
|
+
}, async (uri) => {
|
|
42
|
+
const stack = Governor.getStack();
|
|
43
|
+
return {
|
|
44
|
+
contents: [{
|
|
45
|
+
uri: uri.href,
|
|
46
|
+
text: JSON.stringify({
|
|
47
|
+
anchor: stack.find(t => t.role === 'Anchor') || null,
|
|
48
|
+
active: stack.filter(t => t.role === 'Active'),
|
|
49
|
+
supporting: stack.filter(t => t.role === 'Supporting')
|
|
50
|
+
}, null, 2)
|
|
51
|
+
}]
|
|
52
|
+
};
|
|
53
|
+
});
|
|
54
|
+
server.resource("maturity-status", "cstack://maturity/status", {
|
|
55
|
+
description: "Current maturity level and days of stability",
|
|
56
|
+
mimeType: "application/json"
|
|
57
|
+
}, async (uri) => {
|
|
58
|
+
const state = Governor.getMaturityState();
|
|
59
|
+
return {
|
|
60
|
+
contents: [{
|
|
61
|
+
uri: uri.href,
|
|
62
|
+
text: JSON.stringify(state, null, 2)
|
|
63
|
+
}]
|
|
64
|
+
};
|
|
65
|
+
});
|
|
66
|
+
server.resource("latest-csi", "cstack://csi/latest", {
|
|
67
|
+
description: "Current Conscious Stack Index (CSI) with component breakdown",
|
|
68
|
+
mimeType: "application/json"
|
|
69
|
+
}, async (uri) => {
|
|
70
|
+
const stack = Governor.getStack();
|
|
71
|
+
const diagnosis = await PingalaEngine.diagnose({ tools: stack });
|
|
72
|
+
return {
|
|
73
|
+
contents: [{
|
|
74
|
+
uri: uri.href,
|
|
75
|
+
text: JSON.stringify(diagnosis, null, 2)
|
|
76
|
+
}]
|
|
77
|
+
};
|
|
78
|
+
});
|
|
79
|
+
server.resource("stack-drift", "cstack://drift/current", {
|
|
80
|
+
description: "Current architectural drift signals and score",
|
|
81
|
+
mimeType: "application/json"
|
|
82
|
+
}, async (uri) => {
|
|
83
|
+
const drift = Governor.getStackDriftScore();
|
|
84
|
+
return {
|
|
85
|
+
contents: [{
|
|
86
|
+
uri: uri.href,
|
|
87
|
+
text: JSON.stringify(drift, null, 2)
|
|
88
|
+
}]
|
|
89
|
+
};
|
|
90
|
+
});
|
|
91
|
+
server.prompt("inject-constraints", {
|
|
92
|
+
base_prompt: z.string().describe("The user's original request")
|
|
93
|
+
}, async (args) => {
|
|
94
|
+
const stack = Governor.getStack();
|
|
95
|
+
const state = Governor.getMaturityState();
|
|
96
|
+
const diagnosis = await PingalaEngine.diagnose({ tools: stack });
|
|
97
|
+
const context = Governor.getGovernanceContext();
|
|
98
|
+
const mode = getRegistryMode();
|
|
99
|
+
const modeFlag = mode === 'Authorized' ? 'COLLECTIVE MODE (Authorized)' : 'SOVEREIGN MODE (Local-First)';
|
|
100
|
+
const connectionDetails = mode === 'Authorized'
|
|
101
|
+
? 'Connected to patterns.consciousstack.com (Live Registry)'
|
|
102
|
+
: 'Using local patterns and public registry fallback.';
|
|
103
|
+
return {
|
|
104
|
+
messages: [{
|
|
105
|
+
role: "user",
|
|
106
|
+
content: {
|
|
107
|
+
type: "text",
|
|
108
|
+
text: `GOVERNANCE CONTEXT [${modeFlag}]:
|
|
109
|
+
- Functional Nodes: ${JSON.stringify(context.functional_nodes)}
|
|
110
|
+
- Maturity Level: ${state.level} (${state.level_name}) - ${state.stability_days} days stable
|
|
111
|
+
- CSI Score: ${diagnosis.csi_score} [${diagnosis.risk_band}] (Blended: SDK Logic + Fragmentation)
|
|
112
|
+
- CSI Delta: ${context.progression.csi_delta > 0 ? '+' : ''}${context.progression.csi_delta}
|
|
113
|
+
- SDK Violations: ${diagnosis.protocol_analysis.violations.length > 0 ? diagnosis.protocol_analysis.violations.join('; ') : 'None'}
|
|
114
|
+
- Allowed Actions: ${context.allowed_actions.join(", ")}
|
|
115
|
+
- Blocked Actions: ${context.blocked_actions.join(", ")}
|
|
116
|
+
|
|
117
|
+
REGISTRY & MOAT:
|
|
118
|
+
- Status: ${connectionDetails}
|
|
119
|
+
- Data Moat: ${mode === 'Authorized' ? 'ACTIVE (Contributing anonymized signals)' : 'PENDING (Key required for contribution)'}
|
|
120
|
+
- Privacy Guard: Tool names are NEVER captured, only Categories (e.g., 'Productivity').
|
|
121
|
+
|
|
122
|
+
CONSTRAINTS (Horizon 1.5 - Functional Scaling):
|
|
123
|
+
- 5:3:1 Protocol: Max 1 Anchor Node, 3 Active Nodes, 5 Supporting Nodes (9 Functional Slots Total).
|
|
124
|
+
- Subtraction over addition: Always explore removal before addition.
|
|
125
|
+
- CSI threshold: No destabilizing changes if CSI < 70.
|
|
126
|
+
- Maturity gate: Level ${state.level} requires specific stability before expansion (${context.progression.days_remaining} days remaining).
|
|
127
|
+
|
|
128
|
+
INSTRUCTIONS:
|
|
129
|
+
1. Review 'SDK Violations' first. These represent specific Failure Patterns (e.g., 'Anchor Void') from the registry.
|
|
130
|
+
2. If tool changes are requested, call validate_stack_change() immediately.
|
|
131
|
+
3. ADAPTER RECOGNITION (Horizon 1.5): If a user provides a flat list of apps, identify if any serve the same function across different devices (e.g., 'Chrome (mobile)' and 'Chrome (desktop)').
|
|
132
|
+
- Cluster these into a single 'functionId' (e.g., 'browser').
|
|
133
|
+
- Tag device-specific versions with 'contexts' and 'isAdapter: true'.
|
|
134
|
+
- The MCP now auto-detects these, but your hints improve precision.
|
|
135
|
+
4. PROTOCOL HANDSHAKE: If in COLLECTIVE MODE and you detect a significant CSI shift or a novel pattern match, inform the user: "Significant stack shift detected. Signal buffered for collective intelligence."
|
|
136
|
+
5. Your goal: High Resonance (CSI > 85). Minimize Fragmentation and maximize Decision Provenance.
|
|
137
|
+
|
|
138
|
+
USER REQUEST:
|
|
139
|
+
${args.base_prompt}`
|
|
140
|
+
}
|
|
141
|
+
}]
|
|
142
|
+
};
|
|
143
|
+
});
|
|
144
|
+
server.prompt("canonical-output", {
|
|
145
|
+
analysis_type: z.enum(["audit", "mirror", "zoning"]).describe("Type of analysis being performed")
|
|
146
|
+
}, async (args) => {
|
|
147
|
+
return {
|
|
148
|
+
messages: [{
|
|
149
|
+
role: "user",
|
|
150
|
+
content: {
|
|
151
|
+
type: "text",
|
|
152
|
+
text: `Respond using the Pingala canonical structure for ${args.analysis_type}:
|
|
153
|
+
|
|
154
|
+
## 1. Target State
|
|
155
|
+
[Define desired operating condition with specific metrics]
|
|
156
|
+
|
|
157
|
+
## 2. Current State
|
|
158
|
+
[Summarize present signals from stack, CSI, telemetry]
|
|
159
|
+
|
|
160
|
+
## 3. Recommendations
|
|
161
|
+
[3-5 actionable changes tied to Target State]
|
|
162
|
+
|
|
163
|
+
## 4. Guardrails
|
|
164
|
+
[Rules that prevent erosion]
|
|
165
|
+
|
|
166
|
+
## 5. Workflow Improvements
|
|
167
|
+
[Concrete protocol changes]
|
|
168
|
+
|
|
169
|
+
## 6. Crystalline Geometry
|
|
170
|
+
[Identify hex/cubic patterns and evolution path]
|
|
171
|
+
|
|
172
|
+
## 7. Additional Info
|
|
173
|
+
[Assumptions, caveats, telemetry notes]`
|
|
174
|
+
}
|
|
175
|
+
}]
|
|
176
|
+
};
|
|
177
|
+
});
|
|
178
|
+
server.prompt("augmentation-only", {
|
|
179
|
+
decision_context: z.string().describe("What decision needs to be made")
|
|
180
|
+
}, async (args) => {
|
|
181
|
+
return {
|
|
182
|
+
messages: [{
|
|
183
|
+
role: "user",
|
|
184
|
+
content: {
|
|
185
|
+
type: "text",
|
|
186
|
+
text: `AUGMENTATION MODE ACTIVE
|
|
187
|
+
|
|
188
|
+
Your role: Provide analysis and options
|
|
189
|
+
Human's role: Make final decision and own the outcome
|
|
190
|
+
|
|
191
|
+
Decision context: ${args.decision_context}
|
|
192
|
+
|
|
193
|
+
Provide:
|
|
194
|
+
1. Key factors to consider
|
|
195
|
+
2. 2-3 options with tradeoffs
|
|
196
|
+
3. Data/evidence supporting each option
|
|
197
|
+
4. Potential risks and mitigations
|
|
198
|
+
|
|
199
|
+
Do NOT:
|
|
200
|
+
- Make the decision for the human
|
|
201
|
+
- Use language like 'you should' or 'I recommend'
|
|
202
|
+
- Provide a single answer without alternatives
|
|
203
|
+
|
|
204
|
+
End with: 'What do you decide?'`
|
|
205
|
+
}
|
|
206
|
+
}]
|
|
207
|
+
};
|
|
208
|
+
});
|
|
209
|
+
import { validateToken } from "./core/auth.js";
|
|
210
|
+
const app = express();
|
|
211
|
+
app.use(cors());
|
|
212
|
+
let transport = null;
|
|
213
|
+
app.use("/sse", validateToken);
|
|
214
|
+
app.use("/messages", validateToken);
|
|
215
|
+
app.get("/", (req, res) => {
|
|
216
|
+
res.send(`
|
|
217
|
+
<!DOCTYPE html>
|
|
218
|
+
<html lang="en">
|
|
219
|
+
<head>
|
|
220
|
+
<meta charset="UTF-8">
|
|
221
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
222
|
+
<title>Pingala MCP | Conscious Stack</title>
|
|
223
|
+
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
224
|
+
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
225
|
+
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;700&family=Outfit:wght@300;600&display=swap" rel="stylesheet">
|
|
226
|
+
<style>
|
|
227
|
+
:root {
|
|
228
|
+
--bg: #0a0a0c;
|
|
229
|
+
--fg: #e2e2e4;
|
|
230
|
+
--accent: #9a86fd;
|
|
231
|
+
--glass: rgba(255, 255, 255, 0.05);
|
|
232
|
+
}
|
|
233
|
+
body {
|
|
234
|
+
margin: 0;
|
|
235
|
+
padding: 0;
|
|
236
|
+
background: var(--bg);
|
|
237
|
+
color: var(--fg);
|
|
238
|
+
font-family: 'Inter', sans-serif;
|
|
239
|
+
display: flex;
|
|
240
|
+
flex-direction: column;
|
|
241
|
+
align-items: center;
|
|
242
|
+
justify-content: center;
|
|
243
|
+
min-height: 100vh;
|
|
244
|
+
overflow: hidden;
|
|
245
|
+
}
|
|
246
|
+
.container {
|
|
247
|
+
text-align: center;
|
|
248
|
+
z-index: 10;
|
|
249
|
+
padding: 2rem;
|
|
250
|
+
background: var(--glass);
|
|
251
|
+
backdrop-filter: blur(20px);
|
|
252
|
+
border: 1px solid rgba(255, 255, 255, 0.1);
|
|
253
|
+
border-radius: 24px;
|
|
254
|
+
max-width: 600px;
|
|
255
|
+
}
|
|
256
|
+
h1 {
|
|
257
|
+
font-family: 'Outfit', sans-serif;
|
|
258
|
+
font-size: 3rem;
|
|
259
|
+
margin: 0;
|
|
260
|
+
background: linear-gradient(135deg, #fff 0%, var(--accent) 100%);
|
|
261
|
+
-webkit-background-clip: text;
|
|
262
|
+
-webkit-text-fill-color: transparent;
|
|
263
|
+
}
|
|
264
|
+
p {
|
|
265
|
+
color: #a1a1aa;
|
|
266
|
+
line-height: 1.6;
|
|
267
|
+
margin: 1.5rem 0;
|
|
268
|
+
}
|
|
269
|
+
.details {
|
|
270
|
+
text-align: left;
|
|
271
|
+
background: rgba(0,0,0,0.3);
|
|
272
|
+
padding: 1.5rem;
|
|
273
|
+
border-radius: 12px;
|
|
274
|
+
margin-top: 2rem;
|
|
275
|
+
font-family: monospace;
|
|
276
|
+
font-size: 0.9rem;
|
|
277
|
+
border-left: 4px solid var(--accent);
|
|
278
|
+
}
|
|
279
|
+
.glow {
|
|
280
|
+
position: absolute;
|
|
281
|
+
width: 600px;
|
|
282
|
+
height: 600px;
|
|
283
|
+
background: radial-gradient(circle, rgba(154, 134, 253, 0.15) 0%, transparent 70%);
|
|
284
|
+
top: 50%;
|
|
285
|
+
left: 50%;
|
|
286
|
+
transform: translate(-50%, -50%);
|
|
287
|
+
z-index: 1;
|
|
288
|
+
}
|
|
289
|
+
</style>
|
|
290
|
+
</head>
|
|
291
|
+
<body>
|
|
292
|
+
<div class="glow"></div>
|
|
293
|
+
<div class="container">
|
|
294
|
+
<h1>Pingala MCP</h1>
|
|
295
|
+
<p>Architectural Guardrails for AI Autonomy.<br>The first AI<>Human Co-Governance Layer.</p>
|
|
296
|
+
<div class="details">
|
|
297
|
+
<strong>Endpoint:</strong> mcp.consciousstack.com/sse<br>
|
|
298
|
+
<strong>Transport:</strong> SSE (Server-Sent Events)<br>
|
|
299
|
+
<strong>Auth:</strong> Bearer Token Required
|
|
300
|
+
</div>
|
|
301
|
+
<p style="font-size: 0.8rem; opacity: 0.5; margin-top: 2rem;">© 2026 Conscious Stack Protocol</p>
|
|
302
|
+
</div>
|
|
303
|
+
</body>
|
|
304
|
+
</html>
|
|
305
|
+
`);
|
|
306
|
+
});
|
|
307
|
+
app.get("/sse", async (req, res) => {
|
|
308
|
+
const token = req.query.token || (req.headers.authorization?.startsWith("Bearer ") ? req.headers.authorization.split(" ")[1] : null);
|
|
309
|
+
const messageEndpoint = token ? `/messages?token=${token}` : "/messages";
|
|
310
|
+
transport = new SSEServerTransport(messageEndpoint, res);
|
|
311
|
+
await server.connect(transport);
|
|
312
|
+
});
|
|
313
|
+
app.post("/messages", async (req, res) => {
|
|
314
|
+
if (transport) {
|
|
315
|
+
try {
|
|
316
|
+
await transport.handlePostMessage(req, res);
|
|
317
|
+
}
|
|
318
|
+
catch (e) {
|
|
319
|
+
console.error("[SSE] Post message error:", e.message);
|
|
320
|
+
res.status(500).send(e.message);
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
else {
|
|
324
|
+
console.warn("[SSE] Message received but no active transport found. Vercel lambda likely recycled.");
|
|
325
|
+
res.status(400).send("No active SSE connection. Please reconnect.");
|
|
326
|
+
}
|
|
327
|
+
});
|
|
328
|
+
const PORT = process.env.PORT || 3000;
|
|
329
|
+
const args = process.argv.slice(2);
|
|
330
|
+
const command = args[0];
|
|
331
|
+
if (command) {
|
|
332
|
+
handleCliCommand(command, args.slice(1));
|
|
333
|
+
}
|
|
334
|
+
else {
|
|
335
|
+
if (process.env.NODE_ENV !== 'production' || !process.env.VERCEL) {
|
|
336
|
+
app.listen(PORT, () => {
|
|
337
|
+
console.log(`Pingala MCP Cloud Server running on port ${PORT}`);
|
|
338
|
+
console.log(`SSE endpoint: /sse`);
|
|
339
|
+
console.log(`Messages endpoint: /messages`);
|
|
340
|
+
});
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
async function handleCliCommand(cmd, opts) {
|
|
344
|
+
try {
|
|
345
|
+
switch (cmd) {
|
|
346
|
+
case 'audit':
|
|
347
|
+
await runAudit();
|
|
348
|
+
break;
|
|
349
|
+
case 'setup-claude':
|
|
350
|
+
await runSetupClaude();
|
|
351
|
+
break;
|
|
352
|
+
case 'config':
|
|
353
|
+
await runConfig(opts);
|
|
354
|
+
break;
|
|
355
|
+
default:
|
|
356
|
+
console.error(`Unknown command: ${cmd}`);
|
|
357
|
+
console.log(`Available commands: audit, setup-claude, config`);
|
|
358
|
+
process.exit(1);
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
catch (error) {
|
|
362
|
+
console.error("Error executing command:", error);
|
|
363
|
+
process.exit(1);
|
|
364
|
+
}
|
|
365
|
+
process.exit(0);
|
|
366
|
+
}
|
|
367
|
+
async function runAudit() {
|
|
368
|
+
console.log("🔍 Pingala: Starting local sovereignty audit...");
|
|
369
|
+
const stack = Governor.getStack();
|
|
370
|
+
const result = (await csAuditTool.handler({ path: process.cwd() }));
|
|
371
|
+
const content = result.content[0].text;
|
|
372
|
+
console.log("\n" + content);
|
|
373
|
+
console.log("\n---------------------------------------------------------");
|
|
374
|
+
console.log("🚀 Want to track this over time and get pattern matching?");
|
|
375
|
+
console.log(" Run: npx @cstack-protocol/pingala config set-key <YOUR_CSTACK_API_KEY>");
|
|
376
|
+
console.log(" Get a key at: https://api.consciousstack.com");
|
|
377
|
+
console.log("---------------------------------------------------------");
|
|
378
|
+
}
|
|
379
|
+
async function runSetupClaude() {
|
|
380
|
+
const fs = await import('fs');
|
|
381
|
+
const path = await import('path');
|
|
382
|
+
const os = await import('os');
|
|
383
|
+
console.log("🤖 Pingala: Configuring Claude Desktop...");
|
|
384
|
+
const configPath = path.join(os.homedir(), 'Library', 'Application Support', 'Claude', 'claude_desktop_config.json');
|
|
385
|
+
let config = { mcpServers: {} };
|
|
386
|
+
if (fs.existsSync(configPath)) {
|
|
387
|
+
try {
|
|
388
|
+
config = JSON.parse(fs.readFileSync(configPath, 'utf8'));
|
|
389
|
+
}
|
|
390
|
+
catch (e) {
|
|
391
|
+
console.warn("Could not parse existing config, creating new.");
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
else {
|
|
395
|
+
const dir = path.dirname(configPath);
|
|
396
|
+
if (!fs.existsSync(dir))
|
|
397
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
398
|
+
}
|
|
399
|
+
let apiKey = process.env.CSTACK_API_KEY;
|
|
400
|
+
if (!apiKey) {
|
|
401
|
+
const homeConfig = path.join(os.homedir(), '.cstackrc');
|
|
402
|
+
if (fs.existsSync(homeConfig)) {
|
|
403
|
+
const content = fs.readFileSync(homeConfig, 'utf8');
|
|
404
|
+
const match = content.match(/CSTACK_API_KEY=(.*)/);
|
|
405
|
+
if (match)
|
|
406
|
+
apiKey = match[1].trim();
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
config.mcpServers["pingala"] = {
|
|
410
|
+
command: "npx",
|
|
411
|
+
args: ["-y", "@cstack-protocol/pingala@latest"],
|
|
412
|
+
env: {
|
|
413
|
+
"CSTACK_API_KEY": apiKey || ""
|
|
414
|
+
}
|
|
415
|
+
};
|
|
416
|
+
fs.writeFileSync(configPath, JSON.stringify(config, null, 2));
|
|
417
|
+
console.log(`✅ Successfully updated ${configPath}`);
|
|
418
|
+
if (!apiKey) {
|
|
419
|
+
console.warn("\n⚠️ No API Key found. Your Pingala agent will run in local-only mode.");
|
|
420
|
+
console.log(" To enable cloud patterns: npx @cstack-protocol/pingala config set-key <KEY> && npx @cstack-protocol/pingala setup-claude");
|
|
421
|
+
}
|
|
422
|
+
else {
|
|
423
|
+
console.log(" API Key injected successfully.");
|
|
424
|
+
}
|
|
425
|
+
console.log(" Please restart Claude Desktop to enable Pingala.");
|
|
426
|
+
}
|
|
427
|
+
async function runConfig(opts) {
|
|
428
|
+
if (opts[0] === 'set-key' && opts[1]) {
|
|
429
|
+
console.log(`🔑 Setting API Key: ${opts[1].substring(0, 8)}...`);
|
|
430
|
+
console.log("To persist this, please add it to your environment variables:");
|
|
431
|
+
console.log(`export CSTACK_API_KEY=${opts[1]}`);
|
|
432
|
+
const fs = await import('fs');
|
|
433
|
+
const path = await import('path');
|
|
434
|
+
const os = await import('os');
|
|
435
|
+
const homeConfig = path.join(os.homedir(), '.cstackrc');
|
|
436
|
+
fs.writeFileSync(homeConfig, `CSTACK_API_KEY=${opts[1]}`);
|
|
437
|
+
console.log(` (Saved to ${homeConfig} for local tools)`);
|
|
438
|
+
}
|
|
439
|
+
else {
|
|
440
|
+
console.log("Usage: config set-key <key>");
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
export default app;
|
|
444
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAC3E,OAAO,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC9E,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,IAAI,MAAM,MAAM,CAAC;AAGxB,IAAI,CAAC;IACA,OAAe,CAAC,WAAW,EAAE,CAAC;AACnC,CAAC;AAAC,OAAO,CAAC,EAAE,CAAC;AAEb,CAAC;AAQD,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;IACzB,IAAI,EAAE,YAAY;IAClB,OAAO,EAAE,aAAa;CACzB,CAAC,CAAC;AAGH,IAAI,CAAC;IACD,oBAAoB,CAAC,aAAa,CAAC,CAAC;AACxC,CAAC;AAAC,OAAO,CAAC,EAAE,CAAC;IACT,OAAO,CAAC,KAAK,CAAC,gEAAgE,EAAE,CAAC,CAAC,CAAC;AACvF,CAAC;AAGD,MAAM,KAAK,GAAG,iBAAiB,CAAC,YAAY,EAAE,CAAC;AAC/C,MAAM,YAAY,GAAG,KAAK,CAAC,cAAc,IAAI,kCAAkC,CAAC;AAGhF,MAAM,CAAC,IAAI,CACP,WAAW,CAAC,IAAI,EAChB,GAAG,WAAW,CAAC,WAAW,oBAAoB,YAAY,GAAG,EAC7D,WAAW,CAAC,MAAM,EAClB,WAAW,CAAC,OAAO,CACtB,CAAC;AAEF,MAAM,CAAC,IAAI,CACP,uBAAuB,CAAC,IAAI,EAC5B,uBAAuB,CAAC,WAAW,EACnC,uBAAuB,CAAC,MAAa,EACrC,uBAAuB,CAAC,OAAO,CAClC,CAAC;AAEF,MAAM,CAAC,IAAI,CACP,wBAAwB,CAAC,IAAI,EAC7B,wBAAwB,CAAC,WAAW,EACpC,wBAAwB,CAAC,MAAM,EAC/B,wBAAwB,CAAC,OAAO,CACnC,CAAC;AAEF,MAAM,CAAC,IAAI,CACP,gBAAgB,CAAC,IAAI,EACrB,gBAAgB,CAAC,WAAW,EAC5B,gBAAgB,CAAC,MAAa,EAC9B,gBAAgB,CAAC,OAAO,CAC3B,CAAC;AAEF,MAAM,CAAC,IAAI,CACP,gBAAgB,CAAC,IAAI,EACrB,gBAAgB,CAAC,WAAW,EAC5B,gBAAgB,CAAC,MAAa,EAC9B,gBAAgB,CAAC,OAAO,CAC3B,CAAC;AAGF,MAAM,CAAC,QAAQ,CACX,eAAe,EACf,4BAA4B,EAC5B;IACI,WAAW,EAAE,sCAAsC;IACnD,QAAQ,EAAE,kBAAkB;CAC/B,EACD,KAAK,EAAE,GAAQ,EAAE,EAAE;IACf,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,EAAE,CAAC;IAClC,OAAO;QACH,QAAQ,EAAE,CAAC;gBACP,GAAG,EAAE,GAAG,CAAC,IAAI;gBACb,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACjB,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,IAAI;oBACpD,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC;oBAC9C,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC;iBACzD,EAAE,IAAI,EAAE,CAAC,CAAC;aACd,CAAC;KACL,CAAC;AACN,CAAC,CACJ,CAAC;AAEF,MAAM,CAAC,QAAQ,CACX,iBAAiB,EACjB,0BAA0B,EAC1B;IACI,WAAW,EAAE,8CAA8C;IAC3D,QAAQ,EAAE,kBAAkB;CAC/B,EACD,KAAK,EAAE,GAAQ,EAAE,EAAE;IACf,MAAM,KAAK,GAAG,QAAQ,CAAC,gBAAgB,EAAE,CAAC;IAC1C,OAAO;QACH,QAAQ,EAAE,CAAC;gBACP,GAAG,EAAE,GAAG,CAAC,IAAI;gBACb,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;aACvC,CAAC;KACL,CAAC;AACN,CAAC,CACJ,CAAC;AAEF,MAAM,CAAC,QAAQ,CACX,YAAY,EACZ,qBAAqB,EACrB;IACI,WAAW,EAAE,8DAA8D;IAC3E,QAAQ,EAAE,kBAAkB;CAC/B,EACD,KAAK,EAAE,GAAQ,EAAE,EAAE;IACf,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,EAAE,CAAC;IAClC,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IACjE,OAAO;QACH,QAAQ,EAAE,CAAC;gBACP,GAAG,EAAE,GAAG,CAAC,IAAI;gBACb,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;aAC3C,CAAC;KACL,CAAC;AACN,CAAC,CACJ,CAAC;AAEF,MAAM,CAAC,QAAQ,CACX,aAAa,EACb,wBAAwB,EACxB;IACI,WAAW,EAAE,+CAA+C;IAC5D,QAAQ,EAAE,kBAAkB;CAC/B,EACD,KAAK,EAAE,GAAQ,EAAE,EAAE;IACf,MAAM,KAAK,GAAG,QAAQ,CAAC,kBAAkB,EAAE,CAAC;IAC5C,OAAO;QACH,QAAQ,EAAE,CAAC;gBACP,GAAG,EAAE,GAAG,CAAC,IAAI;gBACb,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;aACvC,CAAC;KACL,CAAC;AACN,CAAC,CACJ,CAAC;AAGF,MAAM,CAAC,MAAM,CACT,oBAAoB,EACpB;IACI,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;CAClE,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;IACX,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,EAAE,CAAC;IAClC,MAAM,KAAK,GAAG,QAAQ,CAAC,gBAAgB,EAAE,CAAC;IAC1C,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IACjE,MAAM,OAAO,GAAG,QAAQ,CAAC,oBAAoB,EAAE,CAAC;IAChD,MAAM,IAAI,GAAG,eAAe,EAAE,CAAC;IAE/B,MAAM,QAAQ,GAAG,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,8BAA8B,CAAC;IACzG,MAAM,iBAAiB,GAAG,IAAI,KAAK,YAAY;QAC3C,CAAC,CAAC,0DAA0D;QAC5D,CAAC,CAAC,oDAAoD,CAAC;IAE3D,OAAO;QACH,QAAQ,EAAE,CAAC;gBACP,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE;oBACL,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,uBAAuB,QAAQ;sBACnC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,gBAAgB,CAAC;oBAC1C,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,UAAU,OAAO,KAAK,CAAC,cAAc;eAChE,SAAS,CAAC,SAAS,KAAK,SAAS,CAAC,SAAS;eAC3C,OAAO,CAAC,WAAW,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,SAAS;oBACvE,SAAS,CAAC,iBAAiB,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM;qBAC7G,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;qBAClC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;;;YAG3C,iBAAiB;eACd,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,0CAA0C,CAAC,CAAC,CAAC,yCAAyC;;;;;;;yBAOpG,KAAK,CAAC,KAAK,kDAAkD,OAAO,CAAC,WAAW,CAAC,cAAc;;;;;;;;;;;;;EAatH,IAAI,CAAC,WAAW,EAAE;iBACH;aACJ,CAAC;KACL,CAAC;AACN,CAAC,CACJ,CAAC;AAEF,MAAM,CAAC,MAAM,CACT,kBAAkB,EAClB;IACI,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,kCAAkC,CAAC;CACpG,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;IACX,OAAO;QACH,QAAQ,EAAE,CAAC;gBACP,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE;oBACL,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,qDAAqD,IAAI,CAAC,aAAa;;;;;;;;;;;;;;;;;;;;;wCAqBzD;iBACvB;aACJ,CAAC;KACL,CAAC;AACN,CAAC,CACJ,CAAC;AAEF,MAAM,CAAC,MAAM,CACT,mBAAmB,EACnB;IACI,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;CAC1E,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;IACX,OAAO;QACH,QAAQ,EAAE,CAAC;gBACP,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE;oBACL,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE;;;;;oBAKN,IAAI,CAAC,gBAAgB;;;;;;;;;;;;;gCAaT;iBACf;aACJ,CAAC;KACL,CAAC;AACN,CAAC,CACJ,CAAC;AAEF,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/C,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;AACtB,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;AAEhB,IAAI,SAAS,GAA8B,IAAI,CAAC;AAGhD,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;AAC/B,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;AAEpC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAQ,EAAE,GAAQ,EAAE,EAAE;IAChC,GAAG,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAyFR,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAEH,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,GAAQ,EAAE,GAAQ,EAAE,EAAE;IAEzC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACrI,MAAM,eAAe,GAAG,KAAK,CAAC,CAAC,CAAC,mBAAmB,KAAK,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;IAEzE,SAAS,GAAG,IAAI,kBAAkB,CAAC,eAAsB,EAAE,GAAG,CAAC,CAAC;IAChE,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AACpC,CAAC,CAAC,CAAC;AAEH,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,GAAQ,EAAE,GAAQ,EAAE,EAAE;IAC/C,IAAI,SAAS,EAAE,CAAC;QACZ,IAAI,CAAC;YACD,MAAM,SAAS,CAAC,iBAAiB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAChD,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YACd,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;YACtD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QACpC,CAAC;IACL,CAAC;SAAM,CAAC;QACJ,OAAO,CAAC,IAAI,CAAC,sFAAsF,CAAC,CAAC;QACrG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;IACxE,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC;AAKtC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAExB,IAAI,OAAO,EAAE,CAAC;IACV,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7C,CAAC;KAAM,CAAC;IAEJ,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;QAC/D,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;YAClB,OAAO,CAAC,GAAG,CAAC,4CAA4C,IAAI,EAAE,CAAC,CAAC;YAChE,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;YAClC,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;IACP,CAAC;AACL,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,GAAW,EAAE,IAAc;IACvD,IAAI,CAAC;QACD,QAAQ,GAAG,EAAE,CAAC;YACV,KAAK,OAAO;gBACR,MAAM,QAAQ,EAAE,CAAC;gBACjB,MAAM;YACV,KAAK,cAAc;gBACf,MAAM,cAAc,EAAE,CAAC;gBACvB,MAAM;YACV,KAAK,QAAQ;gBACT,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC;gBACtB,MAAM;YACV;gBACI,OAAO,CAAC,KAAK,CAAC,oBAAoB,GAAG,EAAE,CAAC,CAAC;gBACzC,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;gBAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACxB,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC;QACjD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC;AAED,KAAK,UAAU,QAAQ;IACnB,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;IAG/D,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,EAAE,CAAC;IAClC,MAAM,MAAM,GAAG,CAAC,MAAM,WAAW,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,GAAG,EAAE,EAAS,CAAC,CAAQ,CAAC;IAGlF,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACvC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,OAAO,CAAC,CAAC;IAG5B,OAAO,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAC;IAC3E,OAAO,CAAC,GAAG,CAAC,2DAA2D,CAAC,CAAC;IACzE,OAAO,CAAC,GAAG,CAAC,2EAA2E,CAAC,CAAC;IACzF,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;IAC/D,OAAO,CAAC,GAAG,CAAC,2DAA2D,CAAC,CAAC;AAC7E,CAAC;AAED,KAAK,UAAU,cAAc;IACzB,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;IAC9B,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;IAClC,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;IAE9B,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;IAEzD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,qBAAqB,EAAE,QAAQ,EAAE,4BAA4B,CAAC,CAAC;IACrH,IAAI,MAAM,GAAQ,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;IAErC,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,IAAI,CAAC;YACD,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;QAC7D,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,OAAO,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;QACnE,CAAC;IACL,CAAC;SAAM,CAAC;QAEJ,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACrC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACpE,CAAC;IAGD,IAAI,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;IACxC,IAAI,CAAC,MAAM,EAAE,CAAC;QACV,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,WAAW,CAAC,CAAC;QACxD,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC5B,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YACpD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;YACnD,IAAI,KAAK;gBAAE,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACxC,CAAC;IACL,CAAC;IAGD,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG;QAC3B,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,CAAC,IAAI,EAAE,iCAAiC,CAAC;QAC/C,GAAG,EAAE;YACD,gBAAgB,EAAE,MAAM,IAAI,EAAE;SACjC;KACJ,CAAC;IAEF,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9D,OAAO,CAAC,GAAG,CAAC,0BAA0B,UAAU,EAAE,CAAC,CAAC;IAEpD,IAAI,CAAC,MAAM,EAAE,CAAC;QACV,OAAO,CAAC,IAAI,CAAC,yEAAyE,CAAC,CAAC;QACxF,OAAO,CAAC,GAAG,CAAC,6HAA6H,CAAC,CAAC;IAC/I,CAAC;SAAM,CAAC;QACJ,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;AACvE,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,IAAc;IACnC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACnC,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;QAGjE,OAAO,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAC;QAC7E,OAAO,CAAC,GAAG,CAAC,yBAAyB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAGhD,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;QAC9B,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;QAClC,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;QAC9B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,WAAW,CAAC,CAAC;QACxD,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,kBAAkB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC1D,OAAO,CAAC,GAAG,CAAC,gBAAgB,UAAU,mBAAmB,CAAC,CAAC;IAC/D,CAAC;SAAM,CAAC;QACJ,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;IAC/C,CAAC;AACL,CAAC;AAED,eAAe,GAAG,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export interface ToolInstance {
|
|
2
|
+
name: string;
|
|
3
|
+
category: string;
|
|
4
|
+
role: 'Anchor' | 'Active' | 'Supporting' | 'Unknown';
|
|
5
|
+
functionId?: string;
|
|
6
|
+
contexts?: string[];
|
|
7
|
+
isAdapter?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export interface StackConfiguration {
|
|
10
|
+
tools: ToolInstance[];
|
|
11
|
+
}
|
|
12
|
+
export interface ValidationResult {
|
|
13
|
+
isValid: boolean;
|
|
14
|
+
score: number;
|
|
15
|
+
violations: string[];
|
|
16
|
+
recommendations: string[];
|
|
17
|
+
}
|
|
18
|
+
export declare class Rule531 {
|
|
19
|
+
static readonly LIMITS: {
|
|
20
|
+
Anchor: number;
|
|
21
|
+
Active: number;
|
|
22
|
+
Support: number;
|
|
23
|
+
Total: number;
|
|
24
|
+
};
|
|
25
|
+
static validate(config: StackConfiguration): ValidationResult;
|
|
26
|
+
}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
export class Rule531 {
|
|
2
|
+
static LIMITS = {
|
|
3
|
+
Anchor: 1,
|
|
4
|
+
Active: 3,
|
|
5
|
+
Support: 5,
|
|
6
|
+
Total: 9
|
|
7
|
+
};
|
|
8
|
+
static validate(config) {
|
|
9
|
+
const violations = [];
|
|
10
|
+
const recommendations = [];
|
|
11
|
+
const functionalNodes = {};
|
|
12
|
+
const unclassifiedTools = [];
|
|
13
|
+
config.tools.forEach(t => {
|
|
14
|
+
if (t.functionId) {
|
|
15
|
+
if (!functionalNodes[t.functionId])
|
|
16
|
+
functionalNodes[t.functionId] = [];
|
|
17
|
+
functionalNodes[t.functionId].push(t);
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
unclassifiedTools.push(t);
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
const getRoleForNode = (tools) => {
|
|
24
|
+
if (tools.some(t => t.role === 'Anchor'))
|
|
25
|
+
return 'Anchor';
|
|
26
|
+
if (tools.some(t => t.role === 'Active'))
|
|
27
|
+
return 'Active';
|
|
28
|
+
if (tools.some(t => t.role === 'Supporting'))
|
|
29
|
+
return 'Supporting';
|
|
30
|
+
return 'Unknown';
|
|
31
|
+
};
|
|
32
|
+
const nodeCounts = {
|
|
33
|
+
Anchor: 0,
|
|
34
|
+
Active: 0,
|
|
35
|
+
Supporting: 0,
|
|
36
|
+
Unknown: 0
|
|
37
|
+
};
|
|
38
|
+
Object.entries(functionalNodes).forEach(([id, tools]) => {
|
|
39
|
+
const role = getRoleForNode(tools);
|
|
40
|
+
if (tools.length > 1) {
|
|
41
|
+
const hasAnchor = tools.some(t => t.role === 'Anchor');
|
|
42
|
+
if (!hasAnchor) {
|
|
43
|
+
violations.push(`Sub-stack Violation: Functional Node '${id}' contains ${tools.length} tools but has no designated Anchor.`);
|
|
44
|
+
}
|
|
45
|
+
if (tools.length > this.LIMITS.Total) {
|
|
46
|
+
violations.push(`Sub-stack Congestion: Functional Node '${id}' exceeds the Rule of 9.`);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
if (role === 'Anchor')
|
|
50
|
+
nodeCounts.Anchor++;
|
|
51
|
+
else if (role === 'Active')
|
|
52
|
+
nodeCounts.Active++;
|
|
53
|
+
else if (role === 'Supporting')
|
|
54
|
+
nodeCounts.Supporting++;
|
|
55
|
+
else
|
|
56
|
+
nodeCounts.Unknown++;
|
|
57
|
+
});
|
|
58
|
+
unclassifiedTools.forEach(t => {
|
|
59
|
+
if (t.role === 'Anchor')
|
|
60
|
+
nodeCounts.Anchor++;
|
|
61
|
+
else if (t.role === 'Active')
|
|
62
|
+
nodeCounts.Active++;
|
|
63
|
+
else if (t.role === 'Supporting')
|
|
64
|
+
nodeCounts.Supporting++;
|
|
65
|
+
else
|
|
66
|
+
nodeCounts.Unknown++;
|
|
67
|
+
});
|
|
68
|
+
if (nodeCounts.Anchor > this.LIMITS.Anchor) {
|
|
69
|
+
violations.push(`Protocol Violation: Too many Anchor Nodes (${nodeCounts.Anchor}). Only ${this.LIMITS.Anchor} is allowed in the Core Stack.`);
|
|
70
|
+
}
|
|
71
|
+
else if (nodeCounts.Anchor === 0) {
|
|
72
|
+
recommendations.push("Identify a single 'Anchor' node to serve as your system's center of truth.");
|
|
73
|
+
}
|
|
74
|
+
if (nodeCounts.Active > this.LIMITS.Active) {
|
|
75
|
+
violations.push(`Protocol Violation: Too many Active Nodes (${nodeCounts.Active}). Limit is ${this.LIMITS.Active}. Cluster secondary active tools into sub-stacks.`);
|
|
76
|
+
}
|
|
77
|
+
if (nodeCounts.Supporting > this.LIMITS.Support) {
|
|
78
|
+
violations.push(`Protocol Violation: Too many Supporting Nodes (${nodeCounts.Supporting}). Limit is ${this.LIMITS.Support}.`);
|
|
79
|
+
}
|
|
80
|
+
const totalNodes = nodeCounts.Anchor + nodeCounts.Active + nodeCounts.Supporting;
|
|
81
|
+
if (totalNodes > this.LIMITS.Total) {
|
|
82
|
+
violations.push(`Stack Drift: Total Functional Slots (${totalNodes}) exceeds the Rule of 9. Move non-core functions into sub-stacks of existing nodes.`);
|
|
83
|
+
}
|
|
84
|
+
let score = 100;
|
|
85
|
+
score -= violations.length * 15;
|
|
86
|
+
score -= nodeCounts.Unknown * 5;
|
|
87
|
+
score = Math.max(0, score);
|
|
88
|
+
return {
|
|
89
|
+
isValid: violations.length === 0,
|
|
90
|
+
score,
|
|
91
|
+
violations,
|
|
92
|
+
recommendations
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=531-rule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"531-rule.js","sourceRoot":"","sources":["../../../../src/core/531-rule.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const validateToken: (req: any, res: any, next: any) => any;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export const validateToken = (req, res, next) => {
|
|
2
|
+
if (req.method === "OPTIONS")
|
|
3
|
+
return next();
|
|
4
|
+
const authHeader = req.headers.authorization;
|
|
5
|
+
if (!authHeader || !authHeader.startsWith("Bearer ")) {
|
|
6
|
+
return res.status(401).json({ error: "Missing or invalid Authorization header" });
|
|
7
|
+
}
|
|
8
|
+
const token = authHeader.split(" ")[1];
|
|
9
|
+
const validTokens = (process.env.VALID_TOKENS || "").split(",").map(t => t.trim());
|
|
10
|
+
if (!validTokens.includes(token)) {
|
|
11
|
+
return res.status(401).json({ error: "Invalid token" });
|
|
12
|
+
}
|
|
13
|
+
next();
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../../src/core/auth.ts"],"names":[],"mappings":"AAOA,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,GAAQ,EAAE,GAAQ,EAAE,IAAS,EAAE,EAAE;IAE3D,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS;QAAE,OAAO,IAAI,EAAE,CAAC;IAE5C,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC;IAC7C,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QACnD,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,yCAAyC,EAAE,CAAC,CAAC;IACtF,CAAC;IAED,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAGvC,MAAM,WAAW,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAEnF,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,IAAI,EAAE,CAAC;AACX,CAAC,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export interface ConsentState {
|
|
2
|
+
l2_accepted: boolean;
|
|
3
|
+
l2_accepted_at?: string;
|
|
4
|
+
l3_accepted: boolean;
|
|
5
|
+
l3_accepted_at?: string;
|
|
6
|
+
}
|
|
7
|
+
export declare class ConsentManager {
|
|
8
|
+
private static dataDir;
|
|
9
|
+
private static globalConsentFile;
|
|
10
|
+
private static workspacePath;
|
|
11
|
+
static setWorkspace(workspacePath: string): void;
|
|
12
|
+
private static getFilePath;
|
|
13
|
+
static getConsentState(): ConsentState;
|
|
14
|
+
static setConsent(level: 'L2' | 'L3', accepted: boolean): void;
|
|
15
|
+
static isAuthorized(level: 'L1' | 'L2' | 'L3', practitionerOverride?: boolean): boolean;
|
|
16
|
+
static getCurrentConsentLevel(): number;
|
|
17
|
+
}
|