@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
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
import * as fs from "node:fs";
|
|
2
|
+
import * as path from "node:path";
|
|
3
|
+
import process from "node:process";
|
|
4
|
+
export class MethodologyLoader {
|
|
5
|
+
static basePath = null;
|
|
6
|
+
static apiKey = null;
|
|
7
|
+
static init() {
|
|
8
|
+
this.basePath = process.env.CSTACK_AGENT_CORE_PATH || null;
|
|
9
|
+
this.apiKey = process.env.CSTACK_API_KEY || null;
|
|
10
|
+
if (this.basePath) {
|
|
11
|
+
console.error(`[MethodologyLoader] Creator Mode: Loading from ${this.basePath}`);
|
|
12
|
+
}
|
|
13
|
+
else if (this.apiKey) {
|
|
14
|
+
console.error(`[MethodologyLoader] Public Mode: API key detected (API fetch TODO)`);
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
console.error(`[MethodologyLoader] Fallback Mode: Using hardcoded defaults`);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
static loadCSIPillars() {
|
|
21
|
+
if (this.basePath) {
|
|
22
|
+
const filePath = path.join(this.basePath, "stack-auditor.md");
|
|
23
|
+
if (fs.existsSync(filePath)) {
|
|
24
|
+
return this.parseCSIPillarsFromFile(filePath);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
return [
|
|
28
|
+
{ name: "Attention Depth (AD)", description: "Quality of deep work and focus (0–100)", weight: 0.35 },
|
|
29
|
+
{ name: "Dependency Exposure (DE)", description: "Workflow independence from non-sovereign AI (0–100)", weight: 0.35 },
|
|
30
|
+
{ name: "Decision Provenance (DP)", description: "Rationale clarity and protocol adherence (0–100)", weight: 0.30 },
|
|
31
|
+
{ name: "Alignment (SAS)", description: "Adherence to CSP (5:3:1 Node) constraints", weight: 0.00 }
|
|
32
|
+
];
|
|
33
|
+
}
|
|
34
|
+
static load531Rules() {
|
|
35
|
+
const defaults = {
|
|
36
|
+
maxTools: 9,
|
|
37
|
+
anchorCount: 1,
|
|
38
|
+
activeCount: 3,
|
|
39
|
+
supportingCount: 5,
|
|
40
|
+
rawDescription: "1 Anchor, 3 Active, 5 Supporting"
|
|
41
|
+
};
|
|
42
|
+
if (this.basePath) {
|
|
43
|
+
const identityPath = path.join(this.basePath, "identity.md");
|
|
44
|
+
if (fs.existsSync(identityPath)) {
|
|
45
|
+
try {
|
|
46
|
+
const content = fs.readFileSync(identityPath, "utf-8");
|
|
47
|
+
const match = content.match(/\d+:\d+:\d+ Rule.*?\((.*?)\)/i);
|
|
48
|
+
if (match && match[1]) {
|
|
49
|
+
const desc = match[1];
|
|
50
|
+
return {
|
|
51
|
+
...defaults,
|
|
52
|
+
rawDescription: desc
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
catch (e) {
|
|
57
|
+
console.error("[MethodologyLoader] Error parsing 531 rules:", e);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return defaults;
|
|
62
|
+
}
|
|
63
|
+
static loadBaguaCategories() {
|
|
64
|
+
if (this.basePath) {
|
|
65
|
+
const filePath = path.join(this.basePath, "architecture.md");
|
|
66
|
+
if (fs.existsSync(filePath)) {
|
|
67
|
+
return this.parseBaguaCategoriesFromFile(filePath);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return [
|
|
71
|
+
{ name: "Li", description: "Fame, reputation, how one is seen by the world.", userFacingLabel: "Social Connection & Visibility" },
|
|
72
|
+
{ name: "Kun", description: "Love, partnerships, and intimate energy management.", userFacingLabel: "Relationships & Self-Care" },
|
|
73
|
+
{ name: "Dui", description: "Creativity, joy, projects, and the 'inner child.'", userFacingLabel: "Creative Expression & Hobbies" },
|
|
74
|
+
{ name: "Qian", description: "Helpful people, travel, and external systems.", userFacingLabel: "Communication & Networking" },
|
|
75
|
+
{ name: "Kan", description: "Life path, professional trajectory, and deep purpose.", userFacingLabel: "Career & Goals" },
|
|
76
|
+
{ name: "Gen", description: "Self-cultivation, knowledge, and wisdom building.", userFacingLabel: "Learning & Growth" },
|
|
77
|
+
{ name: "Zhen", description: "Ancestry, fundamental support systems, and family.", userFacingLabel: "Family & Roots" },
|
|
78
|
+
{ name: "Xun", description: "Wealth, abundance, and resource flow.", userFacingLabel: "Financial Management" },
|
|
79
|
+
{ name: "Tai Ji", description: "The 'Operating System,' physical health, and core stability.", userFacingLabel: "Physical Health & Routines" }
|
|
80
|
+
];
|
|
81
|
+
}
|
|
82
|
+
static loadInnerDiamondCategories() {
|
|
83
|
+
return [
|
|
84
|
+
{ name: "Identity", description: "How your digital choices reflect who you are becoming.", userFacingLabel: "Identity Reflection" },
|
|
85
|
+
{ name: "Purpose", description: "Alignment between your daily actions and your sovereign mission.", userFacingLabel: "Purpose Alignment" },
|
|
86
|
+
{ name: "Sovereignty", description: "Your capacity to act independently of algorithmic nudge.", userFacingLabel: "Sovereignty Forecast" }
|
|
87
|
+
];
|
|
88
|
+
}
|
|
89
|
+
static loadConsentPrompts() {
|
|
90
|
+
const defaults = {
|
|
91
|
+
l2: "Would you like me to include a life balance view?",
|
|
92
|
+
l3: "Want to explore your inner operating system?"
|
|
93
|
+
};
|
|
94
|
+
if (this.basePath) {
|
|
95
|
+
const filePath = path.join(this.basePath, "consent-prompts.md");
|
|
96
|
+
if (fs.existsSync(filePath)) {
|
|
97
|
+
try {
|
|
98
|
+
const content = fs.readFileSync(filePath, "utf-8");
|
|
99
|
+
const l2Match = content.match(/## Level 2.*?Prompt:\s*> "(.*?)"/s);
|
|
100
|
+
const l3Match = content.match(/## Level 3.*?Prompt:\s*> "(.*?)"/s);
|
|
101
|
+
return {
|
|
102
|
+
l2: l2Match ? l2Match[1].trim() : defaults.l2,
|
|
103
|
+
l3: l3Match ? l3Match[1].trim() : defaults.l3
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
catch (e) {
|
|
107
|
+
console.error("[MethodologyLoader] Error parsing consent prompts:", e);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
return defaults;
|
|
112
|
+
}
|
|
113
|
+
static parseCSIPillarsFromFile(filePath) {
|
|
114
|
+
try {
|
|
115
|
+
const content = fs.readFileSync(filePath, "utf-8");
|
|
116
|
+
const csiMatch = content.match(/### Step 3: Compute CSI[\s\S]*?(?=###|$)/);
|
|
117
|
+
if (!csiMatch) {
|
|
118
|
+
return this.loadCSIPillars();
|
|
119
|
+
}
|
|
120
|
+
const pillars = [];
|
|
121
|
+
const pillarPattern = /\d+\.\s*\*\*(\w+)\*\*:\s*(.+)/g;
|
|
122
|
+
let match;
|
|
123
|
+
while ((match = pillarPattern.exec(csiMatch[0])) !== null) {
|
|
124
|
+
pillars.push({
|
|
125
|
+
name: match[1],
|
|
126
|
+
description: match[2].trim(),
|
|
127
|
+
weight: 0.25
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
return pillars.length > 0 ? pillars : this.loadCSIPillars();
|
|
131
|
+
}
|
|
132
|
+
catch {
|
|
133
|
+
return this.loadCSIPillars();
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
static parseBaguaCategoriesFromFile(filePath) {
|
|
137
|
+
try {
|
|
138
|
+
const content = fs.readFileSync(filePath, "utf-8");
|
|
139
|
+
const categories = [];
|
|
140
|
+
const tablePattern = /\|\s*\*\*?(\w+)\*\*?\s*\|\s*([^|]+)\s*\|\s*([^|]+)\s*\|/g;
|
|
141
|
+
let match;
|
|
142
|
+
while ((match = tablePattern.exec(content)) !== null) {
|
|
143
|
+
categories.push({
|
|
144
|
+
name: match[1],
|
|
145
|
+
userFacingLabel: match[2].trim(),
|
|
146
|
+
description: match[3].trim()
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
return categories.length > 0 ? categories : this.loadBaguaCategories();
|
|
150
|
+
}
|
|
151
|
+
catch {
|
|
152
|
+
return this.loadBaguaCategories();
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
static getSourceMode() {
|
|
156
|
+
if (this.basePath)
|
|
157
|
+
return "creator";
|
|
158
|
+
if (this.apiKey)
|
|
159
|
+
return "api";
|
|
160
|
+
return "fallback";
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
MethodologyLoader.init();
|
|
164
|
+
//# sourceMappingURL=methodology.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"methodology.js","sourceRoot":"","sources":["../../src/core/methodology.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { StackConfiguration } from './531-rule.js';
|
|
2
|
+
export interface DiagnoseOptions extends StackConfiguration {
|
|
3
|
+
scores?: {
|
|
4
|
+
attention_depth: number;
|
|
5
|
+
dependency_exposure: number;
|
|
6
|
+
};
|
|
7
|
+
}
|
|
8
|
+
export declare class PingalaEngine {
|
|
9
|
+
static diagnose(config: DiagnoseOptions): Promise<{
|
|
10
|
+
engine: string;
|
|
11
|
+
methodology_source: "creator" | "api" | "fallback";
|
|
12
|
+
csi_score: number;
|
|
13
|
+
pillars: {
|
|
14
|
+
attention_depth: number;
|
|
15
|
+
dependency_exposure: number;
|
|
16
|
+
decision_provenance: number;
|
|
17
|
+
fragmentation_score: number;
|
|
18
|
+
};
|
|
19
|
+
risk_band: string;
|
|
20
|
+
status: string;
|
|
21
|
+
protocol_analysis: {
|
|
22
|
+
isValid: boolean;
|
|
23
|
+
score: number;
|
|
24
|
+
violations: string[];
|
|
25
|
+
recommendations: string[];
|
|
26
|
+
};
|
|
27
|
+
attribution: string;
|
|
28
|
+
}>;
|
|
29
|
+
static getRiskBand(csi: number): string;
|
|
30
|
+
private static getStatusLabel;
|
|
31
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { MethodologyLoader } from './methodology.js';
|
|
2
|
+
import { Governor } from './governor.js';
|
|
3
|
+
import { EngagementAnalyzer } from './engagement-analyzer.js';
|
|
4
|
+
import { performSDKValidation } from './sdk-adapter.js';
|
|
5
|
+
export class PingalaEngine {
|
|
6
|
+
static async diagnose(config) {
|
|
7
|
+
const sdkResult = await performSDKValidation(config.tools);
|
|
8
|
+
const sourceMode = MethodologyLoader.getSourceMode();
|
|
9
|
+
const state = Governor.getMaturityState();
|
|
10
|
+
const ad = config.scores?.attention_depth ?? state.telemetry?.attention_depth ?? 50;
|
|
11
|
+
const de = config.scores?.dependency_exposure ?? state.telemetry?.dependency_exposure ?? 50;
|
|
12
|
+
const dp = Governor.getDecisionProvenanceScore();
|
|
13
|
+
const fs = EngagementAnalyzer.getFragmentationScore(config.tools);
|
|
14
|
+
const blendedCsi = Math.round((sdkResult.csi * 0.7) + (fs * 0.3));
|
|
15
|
+
Governor.updateCsi(blendedCsi);
|
|
16
|
+
return {
|
|
17
|
+
engine: "Pingala v0.3.0 (Powered by CSTACK SDK)",
|
|
18
|
+
methodology_source: sourceMode,
|
|
19
|
+
csi_score: blendedCsi,
|
|
20
|
+
pillars: {
|
|
21
|
+
attention_depth: ad,
|
|
22
|
+
dependency_exposure: de,
|
|
23
|
+
decision_provenance: dp,
|
|
24
|
+
fragmentation_score: fs
|
|
25
|
+
},
|
|
26
|
+
risk_band: this.getRiskBand(blendedCsi),
|
|
27
|
+
status: this.getStatusLabel(blendedCsi),
|
|
28
|
+
protocol_analysis: {
|
|
29
|
+
isValid: sdkResult.status === 'approved',
|
|
30
|
+
score: sdkResult.csi,
|
|
31
|
+
violations: sdkResult.violations.map(v => `${v.name}: ${v.description}`),
|
|
32
|
+
recommendations: sdkResult.recommendations
|
|
33
|
+
},
|
|
34
|
+
attribution: "CSI framework powered by the Conscious Stack Protocol (CSP) Registry."
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
static getRiskBand(csi) {
|
|
38
|
+
if (csi >= 85)
|
|
39
|
+
return "safe";
|
|
40
|
+
if (csi >= 70)
|
|
41
|
+
return "stable";
|
|
42
|
+
if (csi >= 50)
|
|
43
|
+
return "erosion";
|
|
44
|
+
return "system_risk";
|
|
45
|
+
}
|
|
46
|
+
static getStatusLabel(score) {
|
|
47
|
+
if (score >= 85)
|
|
48
|
+
return "Sovereign Resonance";
|
|
49
|
+
if (score >= 70)
|
|
50
|
+
return "Aligned Flow";
|
|
51
|
+
if (score >= 50)
|
|
52
|
+
return "Congested Flux";
|
|
53
|
+
return "Conscious Debt Crisis";
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=pingala.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pingala.js","sourceRoot":"","sources":["../../src/core/pingala.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAE9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAaxD,MAAM,OAAO,aAAa;IAItB,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAuB;QAEzC,MAAM,SAAS,GAAG,MAAM,oBAAoB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAE3D,MAAM,UAAU,GAAG,iBAAiB,CAAC,aAAa,EAAE,CAAC;QACrD,MAAM,KAAK,GAAG,QAAQ,CAAC,gBAAgB,EAAE,CAAC;QAG1C,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,eAAe,IAAI,KAAK,CAAC,SAAS,EAAE,eAAe,IAAI,EAAE,CAAC;QACpF,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,mBAAmB,IAAI,KAAK,CAAC,SAAS,EAAE,mBAAmB,IAAI,EAAE,CAAC;QAC5F,MAAM,EAAE,GAAG,QAAQ,CAAC,0BAA0B,EAAE,CAAC;QACjD,MAAM,EAAE,GAAG,kBAAkB,CAAC,qBAAqB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAGlE,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;QAElE,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAE/B,OAAO;YACH,MAAM,EAAE,wCAAwC;YAChD,kBAAkB,EAAE,UAAU;YAC9B,SAAS,EAAE,UAAU;YACrB,OAAO,EAAE;gBACL,eAAe,EAAE,EAAE;gBACnB,mBAAmB,EAAE,EAAE;gBACvB,mBAAmB,EAAE,EAAE;gBACvB,mBAAmB,EAAE,EAAE;aAC1B;YACD,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC;YACvC,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC;YACvC,iBAAiB,EAAE;gBACf,OAAO,EAAE,SAAS,CAAC,MAAM,KAAK,UAAU;gBACxC,KAAK,EAAE,SAAS,CAAC,GAAG;gBACpB,UAAU,EAAE,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;gBACxE,eAAe,EAAE,SAAS,CAAC,eAAe;aAC7C;YACD,WAAW,EAAE,uEAAuE;SACvF,CAAC;IACN,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,GAAW;QAC1B,IAAI,GAAG,IAAI,EAAE;YAAE,OAAO,MAAM,CAAC;QAC7B,IAAI,GAAG,IAAI,EAAE;YAAE,OAAO,QAAQ,CAAC;QAC/B,IAAI,GAAG,IAAI,EAAE;YAAE,OAAO,SAAS,CAAC;QAChC,OAAO,aAAa,CAAC;IACzB,CAAC;IAEO,MAAM,CAAC,cAAc,CAAC,KAAa;QACvC,IAAI,KAAK,IAAI,EAAE;YAAE,OAAO,qBAAqB,CAAC;QAC9C,IAAI,KAAK,IAAI,EAAE;YAAE,OAAO,cAAc,CAAC;QACvC,IAAI,KAAK,IAAI,EAAE;YAAE,OAAO,gBAAgB,CAAC;QACzC,OAAO,uBAAuB,CAAC;IACnC,CAAC;CACJ"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { ToolInstance } from './531-rule.js';
|
|
2
|
+
import type { StackProfile } from '@cstack-protocol/sdk';
|
|
3
|
+
export declare function mapToSDK(tools: ToolInstance[], operatorId?: string): StackProfile;
|
|
4
|
+
export declare function performSDKValidation(tools: ToolInstance[], operatorId?: string): Promise<import("@cstack-protocol/sdk").GovernanceDecision>;
|
|
5
|
+
export declare function initPingalaTelemetry(consentTier?: 'observer' | 'contributor' | 'sentinel'): void;
|
|
6
|
+
export { getRegistryMode, flushTelemetry } from '@cstack-protocol/sdk';
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { validate as sdkValidate, initTelemetry as sdkInitTelemetry } from '@cstack-protocol/sdk';
|
|
2
|
+
function mapRole(role) {
|
|
3
|
+
switch (role) {
|
|
4
|
+
case 'Anchor': return 'anchor';
|
|
5
|
+
case 'Active': return 'utility';
|
|
6
|
+
case 'Supporting': return 'periphery';
|
|
7
|
+
default: return 'periphery';
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
export function mapToSDK(tools, operatorId) {
|
|
11
|
+
return {
|
|
12
|
+
id: `pingala-${Date.now()}`,
|
|
13
|
+
operatorId: operatorId || 'anonymous-pingala',
|
|
14
|
+
tools: tools.map((t, idx) => ({
|
|
15
|
+
id: t.functionId || `t-${idx}`,
|
|
16
|
+
name: t.name,
|
|
17
|
+
category: t.category,
|
|
18
|
+
role: mapRole(t.role)
|
|
19
|
+
})),
|
|
20
|
+
createdAt: new Date(),
|
|
21
|
+
updatedAt: new Date()
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
export async function performSDKValidation(tools, operatorId) {
|
|
25
|
+
const profile = mapToSDK(tools, operatorId);
|
|
26
|
+
return await sdkValidate(profile);
|
|
27
|
+
}
|
|
28
|
+
export function initPingalaTelemetry(consentTier = 'contributor') {
|
|
29
|
+
sdkInitTelemetry({ consentTier });
|
|
30
|
+
console.log(`🛡️ Pingala: Telemetry initialized with tier: ${consentTier}`);
|
|
31
|
+
}
|
|
32
|
+
export { getRegistryMode, flushTelemetry } from '@cstack-protocol/sdk';
|
|
33
|
+
//# sourceMappingURL=sdk-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sdk-adapter.js","sourceRoot":"","sources":["../../src/core/sdk-adapter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,IAAI,WAAW,EAAE,aAAa,IAAI,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAOlG,SAAS,OAAO,CAAC,IAAY;IACzB,QAAQ,IAAI,EAAE,CAAC;QACX,KAAK,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC;QAC/B,KAAK,QAAQ,CAAC,CAAC,OAAO,SAAS,CAAC;QAChC,KAAK,YAAY,CAAC,CAAC,OAAO,WAAW,CAAC;QACtC,OAAO,CAAC,CAAC,OAAO,WAAW,CAAC;IAChC,CAAC;AACL,CAAC;AAKD,MAAM,UAAU,QAAQ,CAAC,KAAqB,EAAE,UAAmB;IAC/D,OAAO;QACH,EAAE,EAAE,WAAW,IAAI,CAAC,GAAG,EAAE,EAAE;QAC3B,UAAU,EAAE,UAAU,IAAI,mBAAmB;QAC7C,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;YAC1B,EAAE,EAAE,CAAC,CAAC,UAAU,IAAI,KAAK,GAAG,EAAE;YAC9B,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;SACxB,CAAC,CAAC;QACH,SAAS,EAAE,IAAI,IAAI,EAAE;QACrB,SAAS,EAAE,IAAI,IAAI,EAAE;KACxB,CAAC;AACN,CAAC;AAMD,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,KAAqB,EAAE,UAAmB;IACjF,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IAC5C,OAAO,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;AACtC,CAAC;AAKD,MAAM,UAAU,oBAAoB,CAAC,cAAuD,aAAa;IACrG,gBAAgB,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;IAClC,OAAO,CAAC,GAAG,CAAC,iDAAiD,WAAW,EAAE,CAAC,CAAC;AAChF,CAAC;AACD,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export * from './types/index.js';
|
|
2
|
+
export * from './validator/index.js';
|
|
3
|
+
export * from './patterns/index.js';
|
|
4
|
+
export * from './telemetry/buffer.js';
|
|
5
|
+
export * from './telemetry/scrubber.js';
|
|
6
|
+
import { getBufferedSignals, clear } from './telemetry/buffer.js';
|
|
7
|
+
import { syncSignals } from './patterns/index.js';
|
|
8
|
+
export async function flushTelemetry() {
|
|
9
|
+
const signals = getBufferedSignals();
|
|
10
|
+
if (signals.length === 0)
|
|
11
|
+
return true;
|
|
12
|
+
const success = await syncSignals(signals);
|
|
13
|
+
if (success) {
|
|
14
|
+
clear();
|
|
15
|
+
}
|
|
16
|
+
return success;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../cs-agent-core/sdk/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AAExC,OAAO,EAAE,kBAAkB,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAKlD,MAAM,CAAC,KAAK,UAAU,cAAc;IAChC,MAAM,OAAO,GAAG,kBAAkB,EAAE,CAAC;IACrC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAEtC,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;IAC3C,IAAI,OAAO,EAAE,CAAC;QACV,KAAK,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,OAAO,CAAC;AACnB,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export * from './registry.js';
|
|
2
|
+
export const PATTERNS = [
|
|
3
|
+
{
|
|
4
|
+
id: "FP-001",
|
|
5
|
+
name: "Convenience Capitulation",
|
|
6
|
+
type: "drift",
|
|
7
|
+
severity: "critical",
|
|
8
|
+
csiImpact: [-10, -7],
|
|
9
|
+
description: "Temporary friction in existing workflow leading to new app install.",
|
|
10
|
+
seedPhrases: ["This is annoying, I'll just download the app quickly", "just this once"],
|
|
11
|
+
detection: { type: "heuristic", logic: "Tool added within <5 minutes of discovering friction." },
|
|
12
|
+
remediation: "Use a workaround or time-box the new tool."
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
id: "SP-001",
|
|
16
|
+
name: "Anchor Void",
|
|
17
|
+
type: "structural",
|
|
18
|
+
severity: "critical",
|
|
19
|
+
csiImpact: [-15, -10],
|
|
20
|
+
description: "No tool is designated as the primary source of truth (Anchor).",
|
|
21
|
+
seedPhrases: ["Where did I put that?"],
|
|
22
|
+
detection: { type: "rule", logic: "StackProfile contains zero tools with role: 'anchor'." },
|
|
23
|
+
remediation: "Designate one tool as the Anchor."
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
id: "SP-002",
|
|
27
|
+
name: "5:3:1 Violation",
|
|
28
|
+
type: "structural",
|
|
29
|
+
severity: "critical",
|
|
30
|
+
csiImpact: [-10, -5],
|
|
31
|
+
description: "Exceeding the numeric limits of the CSP (9 tools total).",
|
|
32
|
+
seedPhrases: ["I have too many apps"],
|
|
33
|
+
detection: { type: "rule", logic: "StackProfile counts exceed limits." },
|
|
34
|
+
remediation: "Audit and remove tools until limits are met."
|
|
35
|
+
}
|
|
36
|
+
];
|
|
37
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../cs-agent-core/sdk/patterns/index.ts"],"names":[],"mappings":"AACA,cAAc,eAAe,CAAC;AAE9B,MAAM,CAAC,MAAM,QAAQ,GAAqB;IACtC;QACI,EAAE,EAAE,QAAQ;QACZ,IAAI,EAAE,0BAA0B;QAChC,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,UAAU;QACpB,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QACpB,WAAW,EAAE,qEAAqE;QAClF,WAAW,EAAE,CAAC,sDAAsD,EAAE,gBAAgB,CAAC;QACvF,SAAS,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,uDAAuD,EAAE;QAChG,WAAW,EAAE,4CAA4C;KAC5D;IACD;QACI,EAAE,EAAE,QAAQ;QACZ,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE,YAAY;QAClB,QAAQ,EAAE,UAAU;QACpB,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;QACrB,WAAW,EAAE,gEAAgE;QAC7E,WAAW,EAAE,CAAC,uBAAuB,CAAC;QACtC,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,uDAAuD,EAAE;QAC3F,WAAW,EAAE,mCAAmC;KACnD;IACD;QACI,EAAE,EAAE,QAAQ;QACZ,IAAI,EAAE,iBAAiB;QACvB,IAAI,EAAE,YAAY;QAClB,QAAQ,EAAE,UAAU;QACpB,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QACpB,WAAW,EAAE,0DAA0D;QACvE,WAAW,EAAE,CAAC,sBAAsB,CAAC;QACrC,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,oCAAoC,EAAE;QACxE,WAAW,EAAE,8CAA8C;KAC9D;CAEJ,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { FailurePattern } from '../types/pattern.js';
|
|
2
|
+
export declare function syncSignals(signals: any[]): Promise<boolean>;
|
|
3
|
+
export declare function getPatterns(): Promise<FailurePattern[]>;
|
|
4
|
+
export declare function getRegistryMode(): 'Authorized' | 'Public' | 'Disconnected';
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
const REGISTRY_URL = 'https://patterns.consciousstack.com/patterns.json';
|
|
2
|
+
const SIGNAL_URL = 'https://patterns.consciousstack.com/api/signals';
|
|
3
|
+
export async function syncSignals(signals) {
|
|
4
|
+
const apiKey = typeof process !== 'undefined' ? process.env.CSTACK_API_KEY : null;
|
|
5
|
+
if (!apiKey || signals.length === 0)
|
|
6
|
+
return false;
|
|
7
|
+
try {
|
|
8
|
+
const response = await fetch(SIGNAL_URL, {
|
|
9
|
+
method: 'POST',
|
|
10
|
+
headers: {
|
|
11
|
+
'Authorization': `Bearer ${apiKey}`,
|
|
12
|
+
'Content-Type': 'application/json'
|
|
13
|
+
},
|
|
14
|
+
body: JSON.stringify({ signals })
|
|
15
|
+
});
|
|
16
|
+
if (response.ok) {
|
|
17
|
+
console.log(`📡 CSTACK SDK: Successfully synced ${signals.length} signals to the moat.`);
|
|
18
|
+
return true;
|
|
19
|
+
}
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
catch (err) {
|
|
23
|
+
console.warn(`⚠️ CSTACK SDK: Failed to sync signals.`, err);
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
let cachedPatterns = null;
|
|
28
|
+
function mapPattern(raw) {
|
|
29
|
+
return {
|
|
30
|
+
id: raw.id,
|
|
31
|
+
name: raw.name,
|
|
32
|
+
type: raw.type,
|
|
33
|
+
severity: raw.severity,
|
|
34
|
+
csiImpact: raw.csi_impact || [0, 0],
|
|
35
|
+
description: raw.description,
|
|
36
|
+
seedPhrases: raw.seed_phrases || [],
|
|
37
|
+
detection: {
|
|
38
|
+
type: raw.detection?.type || 'heuristic',
|
|
39
|
+
logic: raw.detection?.logic || ''
|
|
40
|
+
},
|
|
41
|
+
remediation: raw.remediation
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
import { PATTERNS } from './index.js';
|
|
45
|
+
export async function getPatterns() {
|
|
46
|
+
if (cachedPatterns)
|
|
47
|
+
return cachedPatterns;
|
|
48
|
+
const apiKey = typeof process !== 'undefined' ? process.env.CSTACK_API_KEY : null;
|
|
49
|
+
try {
|
|
50
|
+
const headers = {
|
|
51
|
+
'Accept': 'application/json'
|
|
52
|
+
};
|
|
53
|
+
if (apiKey) {
|
|
54
|
+
headers['Authorization'] = `Bearer ${apiKey}`;
|
|
55
|
+
}
|
|
56
|
+
const response = await fetch(REGISTRY_URL, { headers });
|
|
57
|
+
if (response.status === 401 || response.status === 403) {
|
|
58
|
+
console.warn(`🗝️ CSTACK SDK: Unauthorized. Running in Local-Only mode. (Check your CSTACK_API_KEY)`);
|
|
59
|
+
return PATTERNS;
|
|
60
|
+
}
|
|
61
|
+
if (!response.ok)
|
|
62
|
+
throw new Error(`Registry fetch failed: ${response.statusText}`);
|
|
63
|
+
const rawPatterns = await response.json();
|
|
64
|
+
cachedPatterns = rawPatterns.map(mapPattern);
|
|
65
|
+
const mode = apiKey ? 'Authorized' : 'Public';
|
|
66
|
+
console.log(`📡 CSTACK SDK: Connected to live registry [${mode}] (${cachedPatterns?.length} patterns loaded).`);
|
|
67
|
+
return cachedPatterns;
|
|
68
|
+
}
|
|
69
|
+
catch (err) {
|
|
70
|
+
console.warn(`⚠️ CSTACK SDK: Falling back to local patterns. Network error or registry unavailable.`);
|
|
71
|
+
return PATTERNS;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
export function getRegistryMode() {
|
|
75
|
+
const apiKey = typeof process !== 'undefined' ? process.env.CSTACK_API_KEY : null;
|
|
76
|
+
if (apiKey)
|
|
77
|
+
return 'Authorized';
|
|
78
|
+
return 'Public';
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../../../cs-agent-core/sdk/patterns/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Signal, ConsentTier } from './types.js';
|
|
2
|
+
export interface TelemetryConfig {
|
|
3
|
+
consentTier: ConsentTier;
|
|
4
|
+
maxBufferSize?: number;
|
|
5
|
+
}
|
|
6
|
+
export declare function initTelemetry(config: TelemetryConfig): void;
|
|
7
|
+
export declare function recordSignal(signal: Signal): void;
|
|
8
|
+
export declare function getBufferedSignals(): Signal[];
|
|
9
|
+
export declare function clear(): void;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
class TelemetryBuffer {
|
|
2
|
+
signals = [];
|
|
3
|
+
config;
|
|
4
|
+
constructor(config) {
|
|
5
|
+
this.config = {
|
|
6
|
+
maxBufferSize: 100,
|
|
7
|
+
...config
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
push(signal) {
|
|
11
|
+
if (this.config.consentTier === 'observer')
|
|
12
|
+
return;
|
|
13
|
+
if (this.config.consentTier === 'contributor') {
|
|
14
|
+
if (signal.signalType === 'StackMutation' || signal.signalType === 'PatternMatch') {
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
this.signals.push(signal);
|
|
19
|
+
if (this.signals.length > (this.config.maxBufferSize || 100)) {
|
|
20
|
+
this.signals.shift();
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
getSignals() {
|
|
24
|
+
return [...this.signals];
|
|
25
|
+
}
|
|
26
|
+
clear() {
|
|
27
|
+
this.signals = [];
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
let globalBuffer = null;
|
|
31
|
+
export function initTelemetry(config) {
|
|
32
|
+
globalBuffer = new TelemetryBuffer(config);
|
|
33
|
+
}
|
|
34
|
+
export function recordSignal(signal) {
|
|
35
|
+
if (globalBuffer) {
|
|
36
|
+
globalBuffer.push(signal);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
export function getBufferedSignals() {
|
|
40
|
+
return globalBuffer ? globalBuffer.getSignals() : [];
|
|
41
|
+
}
|
|
42
|
+
export function clear() {
|
|
43
|
+
if (globalBuffer) {
|
|
44
|
+
globalBuffer.clear();
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=buffer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buffer.js","sourceRoot":"","sources":["../../../../../cs-agent-core/sdk/telemetry/buffer.ts"],"names":[],"mappings":"AAOA,MAAM,eAAe;IACT,OAAO,GAAa,EAAE,CAAC;IACvB,MAAM,CAAkB;IAEhC,YAAY,MAAuB;QAC/B,IAAI,CAAC,MAAM,GAAG;YACV,aAAa,EAAE,GAAG;YAClB,GAAG,MAAM;SACZ,CAAC;IACN,CAAC;IAEM,IAAI,CAAC,MAAc;QACtB,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,KAAK,UAAU;YAAE,OAAO;QAGnD,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,KAAK,aAAa,EAAE,CAAC;YAC5C,IAAI,MAAM,CAAC,UAAU,KAAK,eAAe,IAAI,MAAM,CAAC,UAAU,KAAK,cAAc,EAAE,CAAC;gBAChF,OAAO;YACX,CAAC;QACL,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAE1B,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,GAAG,CAAC,EAAE,CAAC;YAC3D,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACzB,CAAC;IACL,CAAC;IAEM,UAAU;QACb,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAEM,KAAK;QACR,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;IACtB,CAAC;CACJ;AAED,IAAI,YAAY,GAA2B,IAAI,CAAC;AAEhD,MAAM,UAAU,aAAa,CAAC,MAAuB;IACjD,YAAY,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,MAAc;IACvC,IAAI,YAAY,EAAE,CAAC;QACf,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC;AACL,CAAC;AAED,MAAM,UAAU,kBAAkB;IAC9B,OAAO,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,KAAK;IACjB,IAAI,YAAY,EAAE,CAAC;QACf,YAAY,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import * as crypto from 'crypto';
|
|
2
|
+
export function hashId(id, salt = '') {
|
|
3
|
+
return crypto.createHash('sha256').update(id + salt).digest('hex');
|
|
4
|
+
}
|
|
5
|
+
export function jitterTimestamp(timestamp) {
|
|
6
|
+
const jitterRangeMap = 300000;
|
|
7
|
+
const jitter = Math.floor(Math.random() * jitterRangeMap * 2) - jitterRangeMap;
|
|
8
|
+
return timestamp + jitter;
|
|
9
|
+
}
|
|
10
|
+
export function scrubToolName(category) {
|
|
11
|
+
return category;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=scrubber.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scrubber.js","sourceRoot":"","sources":["../../../../../cs-agent-core/sdk/telemetry/scrubber.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAKjC,MAAM,UAAU,MAAM,CAAC,EAAU,EAAE,OAAe,EAAE;IAChD,OAAO,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACvE,CAAC;AAKD,MAAM,UAAU,eAAe,CAAC,SAAiB;IAC7C,MAAM,cAAc,GAAG,MAAM,CAAC;IAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,cAAc,GAAG,CAAC,CAAC,GAAG,cAAc,CAAC;IAC/E,OAAO,SAAS,GAAG,MAAM,CAAC;AAC9B,CAAC;AAKD,MAAM,UAAU,aAAa,CAAC,QAAgB;IAG1C,OAAO,QAAQ,CAAC;AACpB,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import type { StackRole } from '../types/tool.js';
|
|
2
|
+
export type SignalType = 'StackMutation' | 'GeometryShift' | 'PatternMatch' | 'GovernanceDecision';
|
|
3
|
+
export type ConsentTier = 'observer' | 'contributor' | 'sentinel';
|
|
4
|
+
export interface BaseSignal {
|
|
5
|
+
signalId: string;
|
|
6
|
+
signalType: SignalType;
|
|
7
|
+
timestamp: number;
|
|
8
|
+
operatorHash: string;
|
|
9
|
+
sessionId: string;
|
|
10
|
+
}
|
|
11
|
+
export interface StackMutationSignal extends BaseSignal {
|
|
12
|
+
signalType: 'StackMutation';
|
|
13
|
+
mutationType: 'add' | 'remove' | 'roleChange';
|
|
14
|
+
toolCategory: string;
|
|
15
|
+
previousRole?: StackRole;
|
|
16
|
+
newRole?: StackRole;
|
|
17
|
+
csiDelta: number;
|
|
18
|
+
}
|
|
19
|
+
export interface GeometryShiftSignal extends BaseSignal {
|
|
20
|
+
signalType: 'GeometryShift';
|
|
21
|
+
previousGeometry: {
|
|
22
|
+
anchor: number;
|
|
23
|
+
utility: number;
|
|
24
|
+
periphery: number;
|
|
25
|
+
};
|
|
26
|
+
newGeometry: {
|
|
27
|
+
anchor: number;
|
|
28
|
+
utility: number;
|
|
29
|
+
periphery: number;
|
|
30
|
+
};
|
|
31
|
+
wasValid: boolean;
|
|
32
|
+
isValid: boolean;
|
|
33
|
+
}
|
|
34
|
+
export interface PatternMatchSignal extends BaseSignal {
|
|
35
|
+
signalType: 'PatternMatch';
|
|
36
|
+
patternId: string;
|
|
37
|
+
patternType: 'drift' | 'discipline' | 'structural';
|
|
38
|
+
severity: 'critical' | 'warning' | 'info';
|
|
39
|
+
csiImpact: number;
|
|
40
|
+
}
|
|
41
|
+
export interface GovernanceDecisionSignal extends BaseSignal {
|
|
42
|
+
signalType: 'GovernanceDecision';
|
|
43
|
+
previousStatus?: 'approved' | 'warning' | 'blocked';
|
|
44
|
+
newStatus: 'approved' | 'warning' | 'blocked';
|
|
45
|
+
previousCsi?: number;
|
|
46
|
+
newCsi: number;
|
|
47
|
+
violationCount: number;
|
|
48
|
+
warningCount: number;
|
|
49
|
+
}
|
|
50
|
+
export type Signal = StackMutationSignal | GeometryShiftSignal | PatternMatchSignal | GovernanceDecisionSignal;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../cs-agent-core/sdk/telemetry/types.ts"],"names":[],"mappings":""}
|