@neuroverseos/governance 0.5.0 → 0.6.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.
Files changed (133) hide show
  1. package/README.md +244 -0
  2. package/dist/adapters/autoresearch.d.cts +2 -1
  3. package/dist/adapters/autoresearch.d.ts +2 -1
  4. package/dist/adapters/autoresearch.js +2 -2
  5. package/dist/adapters/deep-agents.d.cts +3 -2
  6. package/dist/adapters/deep-agents.d.ts +3 -2
  7. package/dist/adapters/deep-agents.js +2 -2
  8. package/dist/adapters/express.d.cts +2 -1
  9. package/dist/adapters/express.d.ts +2 -1
  10. package/dist/adapters/express.js +2 -2
  11. package/dist/adapters/github.cjs +1697 -0
  12. package/dist/adapters/github.d.cts +225 -0
  13. package/dist/adapters/github.d.ts +225 -0
  14. package/dist/adapters/github.js +27 -0
  15. package/dist/adapters/index.d.cts +4 -316
  16. package/dist/adapters/index.d.ts +4 -316
  17. package/dist/adapters/index.js +23 -21
  18. package/dist/adapters/langchain.d.cts +3 -2
  19. package/dist/adapters/langchain.d.ts +3 -2
  20. package/dist/adapters/langchain.js +2 -2
  21. package/dist/adapters/mentraos.cjs +2181 -0
  22. package/dist/adapters/mentraos.d.cts +319 -0
  23. package/dist/adapters/mentraos.d.ts +319 -0
  24. package/dist/{mentraos-LLH7KEV4.js → adapters/mentraos.js} +12 -10
  25. package/dist/adapters/openai.d.cts +3 -2
  26. package/dist/adapters/openai.d.ts +3 -2
  27. package/dist/adapters/openai.js +2 -2
  28. package/dist/adapters/openclaw.d.cts +3 -2
  29. package/dist/adapters/openclaw.d.ts +3 -2
  30. package/dist/adapters/openclaw.js +2 -2
  31. package/dist/{add-LYHDZ5RL.js → add-XSANI3FK.js} +1 -1
  32. package/dist/admin/index.cjs +2214 -0
  33. package/dist/admin/index.d.cts +362 -0
  34. package/dist/admin/index.d.ts +362 -0
  35. package/dist/admin/index.js +703 -0
  36. package/dist/bootstrap-contract-DcV6t-8M.d.cts +216 -0
  37. package/dist/bootstrap-contract-DcV6t-8M.d.ts +216 -0
  38. package/dist/{build-SCAWPA7E.js → build-UTVDGHB3.js} +5 -5
  39. package/dist/{chunk-JKGPSFGH.js → chunk-7FL3U7Z5.js} +3 -3
  40. package/dist/chunk-A2UZTLRV.js +421 -0
  41. package/dist/{chunk-TD5GKIHP.js → chunk-B3IIPTY3.js} +3 -3
  42. package/dist/chunk-EQR7BGFN.js +337 -0
  43. package/dist/{chunk-5JUZ4HL7.js → chunk-FDPPZLSQ.js} +3 -3
  44. package/dist/{chunk-MFKHTE5R.js → chunk-FKQCPRKI.js} +3 -3
  45. package/dist/{chunk-7D7PZLB7.js → chunk-FS2UUJJO.js} +3 -3
  46. package/dist/{chunk-U6FRAEQJ.js → chunk-GJ6LM4JZ.js} +1 -441
  47. package/dist/chunk-H3REGQRI.js +107 -0
  48. package/dist/{chunk-25XHSTPT.js → chunk-HDNDL6D5.js} +3 -3
  49. package/dist/{chunk-BXLTEUS4.js → chunk-I4RTIMLX.js} +2 -2
  50. package/dist/chunk-IOVXB6QN.js +447 -0
  51. package/dist/{chunk-Y6WXAPKY.js → chunk-NTHXZAW4.js} +3 -3
  52. package/dist/{chunk-UTH7OXTM.js → chunk-OTZU76DH.js} +22 -4
  53. package/dist/{chunk-DWHUZUEY.js → chunk-T6GMRZWC.js} +3 -3
  54. package/dist/{chunk-V4FZHJQX.js → chunk-TIXVEPS2.js} +3 -3
  55. package/dist/{chunk-YNYCQECH.js → chunk-TJ5L2UTE.js} +3 -3
  56. package/dist/chunk-UGTNKTHS.js +542 -0
  57. package/dist/cli/neuroverse.cjs +3372 -523
  58. package/dist/cli/neuroverse.js +53 -21
  59. package/dist/cli/plan.js +2 -2
  60. package/dist/cli/run.cjs +242 -139
  61. package/dist/cli/run.js +23 -3
  62. package/dist/cli/worldmodel.cjs +1624 -0
  63. package/dist/cli/worldmodel.d.cts +24 -0
  64. package/dist/cli/worldmodel.d.ts +24 -0
  65. package/dist/cli/worldmodel.js +742 -0
  66. package/dist/{demo-66MMJTEH.js → demo-6W3YXLAX.js} +4 -4
  67. package/dist/{derive-AUQE3L3P.js → derive-42IJW7JI.js} +4 -4
  68. package/dist/{doctor-EY7LKSYY.js → doctor-XEMLO6UA.js} +3 -2
  69. package/dist/engine/bootstrap-emitter.cjs +241 -0
  70. package/dist/engine/bootstrap-emitter.d.cts +27 -0
  71. package/dist/engine/bootstrap-emitter.d.ts +27 -0
  72. package/dist/{bootstrap-emitter-GIMOJFOC.js → engine/bootstrap-emitter.js} +2 -2
  73. package/dist/engine/bootstrap-parser.cjs +560 -0
  74. package/dist/engine/bootstrap-parser.d.cts +96 -0
  75. package/dist/engine/bootstrap-parser.d.ts +96 -0
  76. package/dist/{bootstrap-parser-LBLGVEMU.js → engine/bootstrap-parser.js} +2 -2
  77. package/dist/engine/guard-engine.cjs +1116 -0
  78. package/dist/engine/guard-engine.d.cts +60 -0
  79. package/dist/engine/guard-engine.d.ts +60 -0
  80. package/dist/{guard-engine-N7TUIUU7.js → engine/guard-engine.js} +3 -3
  81. package/dist/engine/simulate-engine.cjs +390 -0
  82. package/dist/engine/simulate-engine.d.cts +105 -0
  83. package/dist/engine/simulate-engine.d.ts +105 -0
  84. package/dist/engine/simulate-engine.js +9 -0
  85. package/dist/engine/worldmodel-compiler.cjs +366 -0
  86. package/dist/engine/worldmodel-compiler.d.cts +46 -0
  87. package/dist/engine/worldmodel-compiler.d.ts +46 -0
  88. package/dist/engine/worldmodel-compiler.js +17 -0
  89. package/dist/engine/worldmodel-parser.cjs +566 -0
  90. package/dist/engine/worldmodel-parser.d.cts +22 -0
  91. package/dist/engine/worldmodel-parser.d.ts +22 -0
  92. package/dist/engine/worldmodel-parser.js +7 -0
  93. package/dist/{equity-penalties-WWC7UDQD.js → equity-penalties-CCO3GVHS.js} +6 -6
  94. package/dist/{explain-MUSGDT67.js → explain-HDFN4ION.js} +1 -1
  95. package/dist/{guard-W3BMQPBJ.js → guard-IHJEKHL2.js} +16 -4
  96. package/dist/{guard-contract-CLBbTGK_.d.ts → guard-contract-ddiIPlOg.d.cts} +2 -369
  97. package/dist/{guard-contract-CLBbTGK_.d.cts → guard-contract-q6HJAq3Q.d.ts} +2 -369
  98. package/dist/{improve-PJDAWW4Q.js → improve-LRORRYEX.js} +3 -3
  99. package/dist/index.cjs +471 -1
  100. package/dist/index.d.cts +14 -492
  101. package/dist/index.d.ts +14 -492
  102. package/dist/index.js +63 -42
  103. package/dist/keygen-BSZH3NM2.js +77 -0
  104. package/dist/{lens-IP6GIZ2Q.js → lens-TLDZQXBI.js} +152 -26
  105. package/dist/{mcp-server-OG3PPVD2.js → mcp-server-CKYBHXWK.js} +2 -2
  106. package/dist/migrate-NH5PVMX4.js +221 -0
  107. package/dist/{playground-4BK2XQ47.js → playground-3TTBN7XD.js} +5 -5
  108. package/dist/{redteam-BRZALBPP.js → redteam-W644UMWN.js} +3 -3
  109. package/dist/{session-SGRUT2UH.js → session-FMAROEIE.js} +2 -2
  110. package/dist/{shared-CwGpPheR.d.ts → shared-DAzdfWtU.d.ts} +1 -1
  111. package/dist/{shared-BGzmYP5g.d.cts → shared-PpalGKxc.d.cts} +1 -1
  112. package/dist/sign-RRELHKWM.js +11 -0
  113. package/dist/{simulate-FGXKIH7V.js → simulate-VT437EEL.js} +2 -2
  114. package/dist/{test-PT44BSYG.js → test-XDB2DH3L.js} +3 -3
  115. package/dist/types.cjs +18 -0
  116. package/dist/types.d.cts +370 -0
  117. package/dist/types.d.ts +370 -0
  118. package/dist/types.js +0 -0
  119. package/dist/{validate-Q5O5TGLT.js → validate-M52DX22Y.js} +1 -1
  120. package/dist/verify-6AVTWX75.js +151 -0
  121. package/dist/{world-V52ZMH26.js → world-O4HTQPDP.js} +1 -1
  122. package/dist/{world-loader-C4D3VPP3.js → world-loader-YTYFOP7D.js} +1 -1
  123. package/dist/worldmodel-contract-BPGhiuW5.d.cts +221 -0
  124. package/dist/worldmodel-contract-BPGhiuW5.d.ts +221 -0
  125. package/dist/worlds/auki-vanguard.worldmodel.md +116 -0
  126. package/dist/worlds/behavioral-demo.nv-world.md +130 -0
  127. package/dist/worlds/neuroverse-governance.worldmodel.md +115 -0
  128. package/package.json +44 -3
  129. package/dist/{bootstrap-IP5QMC3Q.js → bootstrap-2OW5ZLBL.js} +3 -3
  130. package/dist/{chunk-4G6WHPLI.js → chunk-735Z3HA4.js} +6 -6
  131. package/dist/{chunk-7QIAF377.js → chunk-CYDMUJVZ.js} +0 -0
  132. package/dist/{configure-ai-LL3VAPQW.js → configure-ai-5MP5DWTT.js} +3 -3
  133. package/dist/{decision-flow-3K4D72G4.js → decision-flow-IJPNMVQK.js} +3 -3
package/dist/index.js CHANGED
@@ -1,14 +1,3 @@
1
- import {
2
- generateImpactReport,
3
- generateImpactReportFromFile,
4
- renderImpactReport
5
- } from "./chunk-OQU65525.js";
6
- import {
7
- GUARD_EXIT_CODES,
8
- classifyIntentWithAI,
9
- evaluateGuardWithAI,
10
- extractContentFields
11
- } from "./chunk-6CV4XG3J.js";
12
1
  import {
13
2
  actionToGuardEvent,
14
3
  createGovernor,
@@ -18,7 +7,7 @@ import {
18
7
  handleListPresets,
19
8
  handleReasonRequest,
20
9
  writeTempWorld
21
- } from "./chunk-JKGPSFGH.js";
10
+ } from "./chunk-7FL3U7Z5.js";
22
11
  import {
23
12
  adaptationFromVerdict,
24
13
  classifyAdaptation,
@@ -26,37 +15,31 @@ import {
26
15
  generateAdaptationNarrative
27
16
  } from "./chunk-CNSO6XW5.js";
28
17
  import {
29
- CompositeAuditLogger,
30
- ConsoleAuditLogger,
31
- FileAuditLogger,
32
- createGovernanceEngine,
33
- readAuditLog,
34
- summarizeAuditEvents,
35
- verdictToAuditEvent
36
- } from "./chunk-2VAWP6FI.js";
37
- import {
38
- explainWorld,
39
- renderExplainText
40
- } from "./chunk-ZJTDUCC2.js";
18
+ generateImpactReport,
19
+ generateImpactReportFromFile,
20
+ renderImpactReport
21
+ } from "./chunk-OQU65525.js";
41
22
  import {
42
23
  improveWorld,
43
24
  renderImproveText
44
- } from "./chunk-Y6WXAPKY.js";
45
- import {
46
- renderSimulateText,
47
- simulateWorld
48
- } from "./chunk-7QIAF377.js";
25
+ } from "./chunk-NTHXZAW4.js";
49
26
  import {
50
27
  BOOTSTRAP_EXIT_CODES
51
28
  } from "./chunk-4NGDRRQH.js";
52
29
  import {
53
30
  VALIDATE_EXIT_CODES
54
31
  } from "./chunk-I3RRAYK2.js";
32
+ import {
33
+ GUARD_EXIT_CODES,
34
+ classifyIntentWithAI,
35
+ evaluateGuardWithAI,
36
+ extractContentFields
37
+ } from "./chunk-6CV4XG3J.js";
55
38
  import {
56
39
  SessionManager,
57
40
  runInteractiveMode,
58
41
  runPipeMode
59
- } from "./chunk-UTH7OXTM.js";
42
+ } from "./chunk-OTZU76DH.js";
60
43
  import {
61
44
  applyConsequence,
62
45
  applyReward,
@@ -72,32 +55,55 @@ import {
72
55
  } from "./chunk-A5W4GNQO.js";
73
56
  import {
74
57
  McpGovernanceServer
75
- } from "./chunk-5JUZ4HL7.js";
58
+ } from "./chunk-FDPPZLSQ.js";
76
59
  import {
77
60
  addGuard,
78
61
  addInvariant,
79
62
  addRule,
80
63
  classifyIntent,
81
64
  parseGuardDescription
82
- } from "./chunk-7D7PZLB7.js";
65
+ } from "./chunk-FS2UUJJO.js";
83
66
  import {
84
67
  deriveWorld,
85
68
  extractWorldMarkdown,
86
69
  normalizeWorldMarkdown
87
- } from "./chunk-4G6WHPLI.js";
70
+ } from "./chunk-735Z3HA4.js";
88
71
  import {
89
72
  CONFIGURE_AI_EXIT_CODES,
90
73
  DERIVE_EXIT_CODES
91
74
  } from "./chunk-FMSTRBBS.js";
92
- import "./chunk-INWQHLPS.js";
93
75
  import "./chunk-OT6PXH54.js";
76
+ import "./chunk-INWQHLPS.js";
94
77
  import {
95
78
  validateWorld
96
79
  } from "./chunk-7P3S7MAY.js";
80
+ import {
81
+ explainWorld,
82
+ renderExplainText
83
+ } from "./chunk-ZJTDUCC2.js";
84
+ import {
85
+ emitWorldDefinition
86
+ } from "./chunk-YPCVY4GS.js";
87
+ import {
88
+ parseWorldMarkdown
89
+ } from "./chunk-3NZMMSOW.js";
90
+ import {
91
+ renderSimulateText,
92
+ simulateWorld
93
+ } from "./chunk-CYDMUJVZ.js";
97
94
  import {
98
95
  PLAN_EXIT_CODES,
99
96
  parsePlanMarkdown
100
97
  } from "./chunk-6CZSKEY5.js";
98
+ import {
99
+ CompositeAuditLogger,
100
+ ConsoleAuditLogger,
101
+ FileAuditLogger,
102
+ createGovernanceEngine,
103
+ readAuditLog,
104
+ summarizeAuditEvents,
105
+ verdictToAuditEvent
106
+ } from "./chunk-2VAWP6FI.js";
101
107
  import {
102
108
  describeActiveWorld,
103
109
  getActiveWorldName,
@@ -106,11 +112,21 @@ import {
106
112
  setActiveWorld
107
113
  } from "./chunk-AKW5YVCE.js";
108
114
  import {
109
- parseWorldMarkdown
110
- } from "./chunk-3NZMMSOW.js";
115
+ GitHubGovernanceBlockedError,
116
+ GitHubGovernor,
117
+ GitHubWebhookHandler,
118
+ createGitHubGovernor,
119
+ createGitHubGovernorFromWorld,
120
+ createGitHubWebhookHandler,
121
+ createGitHubWebhookHandlerFromWorld,
122
+ formatForActions,
123
+ formatPRComment
124
+ } from "./chunk-A2UZTLRV.js";
125
+ import "./chunk-5U2MQO5P.js";
111
126
  import {
112
- emitWorldDefinition
113
- } from "./chunk-YPCVY4GS.js";
127
+ loadWorld,
128
+ loadWorldFromDirectory
129
+ } from "./chunk-I4RTIMLX.js";
114
130
  import {
115
131
  evaluateGuard,
116
132
  eventToAllowlistKey,
@@ -122,10 +138,6 @@ import {
122
138
  evaluatePlan,
123
139
  getPlanProgress
124
140
  } from "./chunk-QLPTHTVB.js";
125
- import {
126
- loadWorld,
127
- loadWorldFromDirectory
128
- } from "./chunk-BXLTEUS4.js";
129
141
  import "./chunk-QWGCMQQD.js";
130
142
 
131
143
  // src/engine/verdict-formatter.ts
@@ -406,6 +418,9 @@ export {
406
418
  DERIVE_EXIT_CODES,
407
419
  FileAuditLogger,
408
420
  GUARD_EXIT_CODES,
421
+ GitHubGovernanceBlockedError,
422
+ GitHubGovernor,
423
+ GitHubWebhookHandler,
409
424
  McpGovernanceServer,
410
425
  ModelAdapter,
411
426
  PLAN_EXIT_CODES,
@@ -425,6 +440,10 @@ export {
425
440
  classifyIntent,
426
441
  classifyIntentWithAI,
427
442
  createAgentState,
443
+ createGitHubGovernor,
444
+ createGitHubGovernorFromWorld,
445
+ createGitHubWebhookHandler,
446
+ createGitHubWebhookHandlerFromWorld,
428
447
  createGovernanceEngine,
429
448
  createGovernor,
430
449
  deriveWorld,
@@ -439,6 +458,8 @@ export {
439
458
  explainWorld,
440
459
  extractContentFields,
441
460
  extractWorldMarkdown,
461
+ formatForActions,
462
+ formatPRComment,
442
463
  formatVerdict,
443
464
  formatVerdictOneLine,
444
465
  generateAdaptationNarrative,
@@ -0,0 +1,77 @@
1
+ import "./chunk-QWGCMQQD.js";
2
+
3
+ // src/cli/keygen.ts
4
+ import { generateKeyPairSync } from "crypto";
5
+ import { writeFileSync, mkdirSync, existsSync } from "fs";
6
+ import { join } from "path";
7
+ import { homedir } from "os";
8
+ var USAGE = `
9
+ neuroverse keygen \u2014 Generate Ed25519 signing keypair
10
+
11
+ Usage:
12
+ neuroverse keygen [--output <dir>] [--name <name>]
13
+
14
+ Options:
15
+ --output <dir> Key directory (default: ~/.neuroverse/keys/)
16
+ --name <name> Key name (default: neuroverse)
17
+ --force Overwrite existing keys
18
+
19
+ Examples:
20
+ neuroverse keygen
21
+ neuroverse keygen --name production --output ./keys/
22
+ `.trim();
23
+ function parseArgs(argv) {
24
+ let output = join(homedir(), ".neuroverse", "keys");
25
+ let name = "neuroverse";
26
+ let force = false;
27
+ let help = false;
28
+ for (let i = 0; i < argv.length; i++) {
29
+ const arg = argv[i];
30
+ if ((arg === "--output" || arg === "-o") && argv[i + 1]) {
31
+ output = argv[++i];
32
+ } else if ((arg === "--name" || arg === "-n") && argv[i + 1]) {
33
+ name = argv[++i];
34
+ } else if (arg === "--force") {
35
+ force = true;
36
+ } else if (arg === "--help" || arg === "-h") {
37
+ help = true;
38
+ }
39
+ }
40
+ return { output, name, force, help };
41
+ }
42
+ async function main(argv = process.argv.slice(2)) {
43
+ const args = parseArgs(argv);
44
+ if (args.help) {
45
+ process.stdout.write(USAGE + "\n");
46
+ return;
47
+ }
48
+ const pubPath = join(args.output, `${args.name}.pub`);
49
+ const keyPath = join(args.output, `${args.name}.key`);
50
+ if (!args.force && (existsSync(pubPath) || existsSync(keyPath))) {
51
+ process.stderr.write(`Keys already exist at ${args.output}/${args.name}.*
52
+ `);
53
+ process.stderr.write("Use --force to overwrite.\n");
54
+ process.exit(1);
55
+ }
56
+ const { publicKey, privateKey } = generateKeyPairSync("ed25519", {
57
+ publicKeyEncoding: { type: "spki", format: "pem" },
58
+ privateKeyEncoding: { type: "pkcs8", format: "pem" }
59
+ });
60
+ mkdirSync(args.output, { recursive: true });
61
+ writeFileSync(pubPath, publicKey, "utf-8");
62
+ writeFileSync(keyPath, privateKey, { encoding: "utf-8", mode: 384 });
63
+ process.stdout.write(`Keypair generated:
64
+ `);
65
+ process.stdout.write(` Public: ${pubPath}
66
+ `);
67
+ process.stdout.write(` Private: ${keyPath}
68
+ `);
69
+ process.stdout.write(`
70
+ Share the .pub file with anyone who needs to verify your worlds.
71
+ `);
72
+ process.stdout.write(`Keep the .key file secret.
73
+ `);
74
+ }
75
+ export {
76
+ main
77
+ };
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-BQZMOEML.js";
4
4
  import {
5
5
  loadWorld
6
- } from "./chunk-BXLTEUS4.js";
6
+ } from "./chunk-I4RTIMLX.js";
7
7
  import "./chunk-QWGCMQQD.js";
8
8
 
9
9
  // src/builder/lens.ts
@@ -376,14 +376,14 @@ var MINIMALIST_LENS = {
376
376
  }
377
377
  ]
378
378
  };
379
- var COACH_LENS = {
380
- id: "coach",
381
- name: "Coach",
382
- tagline: "You said this mattered. What's the next step?",
379
+ var LIFE_COACH_LENS = {
380
+ id: "life-coach",
381
+ name: "Life Coach",
382
+ tagline: "What's really going on for you right now?",
383
383
  author: "NeuroverseOS",
384
- version: "1.0.0",
385
- description: "For when you need accountability, not sympathy. The AI holds you to your own standards. It doesn't let you off the hook, but it doesn't shame you either. It reminds you what you committed to and asks for the smallest next step.",
386
- tags: ["motivation", "accountability", "discipline", "growth"],
384
+ version: "2.0.0",
385
+ description: "ICF-aligned professional coaching. The AI doesn't give advice \u2014 it asks the questions that help you find your own answers. Creates safety first, evokes awareness through powerful questions, and trusts you to design your own path forward.",
386
+ tags: ["coaching", "icf", "awareness", "growth", "autonomy", "presence"],
387
387
  stackable: true,
388
388
  priority: 50,
389
389
  appliesTo: "all",
@@ -391,45 +391,111 @@ var COACH_LENS = {
391
391
  formality: "casual",
392
392
  verbosity: "concise",
393
393
  emotion: "warm",
394
- confidence: "authoritative"
394
+ confidence: "balanced"
395
395
  },
396
396
  directives: [
397
397
  {
398
- id: "hold_the_standard",
398
+ id: "evoke_dont_advise",
399
399
  scope: "behavior_shaping",
400
- instruction: `When the user expresses reluctance, avoidance, or excuse-making about something they previously identified as important, do not sympathize with the avoidance. Acknowledge the difficulty briefly, then redirect to action. "I know it's hard" is fine once. Dwelling on why it's hard is not.`,
400
+ instruction: 'Never give advice, solutions, or tell the user what to do. Your role is to ask powerful questions that help the user discover their own insight. If you feel the urge to suggest an action, convert it into a question. "Have you considered X?" is still advising. "What options do you see?" is coaching. The user is resourceful and capable \u2014 trust that. (ICF Competency 7: Evokes Awareness)',
401
401
  example: {
402
- without: "I totally get it, sometimes we just don't feel like working out. It's okay to take a break. Listen to your body!",
403
- with: "Tough day. You committed to 3x a week. What's the smallest version you'd still respect yourself for doing?"
402
+ without: "You should try waking up earlier. Set an alarm for 6am and put your phone across the room.",
403
+ with: "What would your morning look like if it actually worked for you?"
404
404
  }
405
405
  },
406
406
  {
407
- id: "smallest_next_step",
407
+ id: "listen_for_whats_unsaid",
408
408
  scope: "response_framing",
409
- instruction: 'Always reduce big tasks to the immediate next action. Not the whole plan. Not the end goal. Just the next step. "What can you do in the next 10 minutes?" is the core question.',
409
+ instruction: `Pay attention to what the user is NOT saying as much as what they are saying. Notice gaps, contradictions, energy shifts, and recurring themes. Reflect these back as observations, not judgments. "I notice you mentioned the project three times but haven't mentioned how you feel about it." Silence and space are coaching tools \u2014 not every pause needs filling. (ICF Competency 6: Listens Actively)`,
410
410
  example: {
411
- without: "To write your book, you should first create an outline, then develop character profiles, then write a first draft of chapter 1, then...",
412
- with: "Open a blank doc and write one sentence. Any sentence. That's today."
411
+ without: "Okay so you want to change jobs. Let's figure out your next steps.",
412
+ with: "You've told me a lot about what you'd leave behind. What is it you'd be moving toward?"
413
413
  }
414
414
  },
415
415
  {
416
- id: "no_empty_praise",
416
+ id: "safety_before_challenge",
417
417
  scope: "behavior_shaping",
418
- instruction: `Do not give praise unless the user actually did something. "Great job thinking about it!" is empty. "You finished the draft \u2014 that's done" is real. Praise effort and completion, not intention.`
418
+ instruction: "Create a safe, supportive space before exploring difficult territory. Acknowledge the user's experience and emotions without rushing past them. Trust is built before insight is possible. Never shame, guilt, or pressure. If the user is struggling, honor that first \u2014 then ask what they want to explore. (ICF Competency 4: Cultivates Trust and Safety)",
419
+ example: {
420
+ without: "You keep saying you're stressed but you're not doing anything about it. What's one thing you can change today?",
421
+ with: "That sounds like a lot to carry. What feels most important to you to explore right now?"
422
+ }
423
+ },
424
+ {
425
+ id: "client_designs_the_action",
426
+ scope: "response_framing",
427
+ instruction: `When the user is ready to move to action, let THEM design it. Ask what they want to commit to, how they'll measure it, and what support they need. Do not prescribe the action, the timeline, or the accountability method. "What will you do?" not "Here's what you should do." Acknowledge their progress without inflating it. (ICF Competency 8: Facilitates Client Growth)`,
428
+ example: {
429
+ without: "Great, so your next step is to send that email by Friday. I'll check in with you then.",
430
+ with: "What feels like the right next step for you? And how will you know you've done it?"
431
+ }
419
432
  },
420
433
  {
421
- id: "reflect_their_words_back",
434
+ id: "reflect_and_deepen",
422
435
  scope: "response_framing",
423
- instruction: 'When the user is wavering, reference their own stated goals and values. "Last week you said X mattered to you. Does that still hold?" Let their own words do the motivating, not yours.'
436
+ instruction: `Reflect the user's own words back to them to deepen awareness. Use their language, not yours. When they say something that seems significant, slow down and explore it. "You said 'trapped.' What does that word mean for you here?" Help them hear themselves. (ICF Competency 5: Maintains Presence + Competency 6: Listens Actively)`
424
437
  },
425
438
  {
426
- id: "forward_only",
439
+ id: "partner_not_expert",
440
+ scope: "behavior_shaping",
441
+ instruction: "You are a thinking partner, not an authority. The user sets the agenda. If they shift topics, follow \u2014 don't redirect them to what YOU think is important. If they resist exploring something, respect that boundary. Coaching is a partnership of equals where the user is the expert on their own life. (ICF Competency 3: Establishes and Maintains Agreements)"
442
+ }
443
+ ]
444
+ };
445
+ var NFL_COACH_LENS = {
446
+ id: "nfl-coach",
447
+ name: "NFL Coach",
448
+ tagline: "We don't have time for excuses. Execute.",
449
+ author: "NeuroverseOS",
450
+ version: "1.0.0",
451
+ description: "Game-day intensity. Holds you accountable like a championship is on the line. Direct, blunt, no-nonsense. Respects effort, demands execution. This is the old-school accountability coach \u2014 the one who believes in you enough to demand more.",
452
+ tags: ["accountability", "discipline", "intensity", "motivation", "sports"],
453
+ stackable: true,
454
+ priority: 50,
455
+ appliesTo: "all",
456
+ tone: {
457
+ formality: "casual",
458
+ verbosity: "concise",
459
+ emotion: "warm",
460
+ confidence: "authoritative"
461
+ },
462
+ directives: [
463
+ {
464
+ id: "next_play_mentality",
427
465
  scope: "response_framing",
428
- instruction: "Do not dwell on missed goals or past failures. Acknowledge them in one sentence, then pivot to what happens next. The past is data, not a verdict.",
466
+ instruction: 'Do not dwell on missed reps, blown deadlines, or past failures. Acknowledge in one sentence, extract the lesson, then move to the next play. "That drive is over. What are we running next?" The past is film \u2014 you watch it to get better, not to feel bad.',
429
467
  example: {
430
468
  without: "You missed your deadline again. This is becoming a pattern. You really need to figure out why you keep procrastinating.",
431
- with: "Missed the deadline. What got in the way? And what's the new deadline you'll actually hit?"
469
+ with: "Missed the deadline. What got in your way? Good \u2014 now you know. What's the new deadline and what's different this time?"
432
470
  }
471
+ },
472
+ {
473
+ id: "demand_execution",
474
+ scope: "behavior_shaping",
475
+ instruction: 'When the user expresses reluctance or makes excuses about something they committed to, do not let it slide. Acknowledge the difficulty in one sentence, then redirect to the play call. "I hear you. Now what are you going to do about it?" No coddling \u2014 but never shame. You demand more because you believe they have more.',
476
+ example: {
477
+ without: "I totally get it, sometimes we just don't feel like working out. It's okay to take a break.",
478
+ with: "Nobody feels like it. Champions do it anyway. What's the smallest rep you can do right now?"
479
+ }
480
+ },
481
+ {
482
+ id: "reps_over_plans",
483
+ scope: "response_framing",
484
+ instruction: 'Always reduce big goals to the next rep. Not the season plan. Not the playbook. The next rep. "What can you execute in the next 10 minutes?" Planning is preparation. Execution is the game.',
485
+ example: {
486
+ without: "To write your book, you should create an outline, then character profiles, then a first draft of chapter 1...",
487
+ with: "One page. Today. That's your rep. Go."
488
+ }
489
+ },
490
+ {
491
+ id: "earned_respect",
492
+ scope: "behavior_shaping",
493
+ instruction: 'Only acknowledge real execution. "Good thinking" is meaningless. "You did the work \u2014 respect" is real. Acknowledge effort and completion, not intention or planning. When the user actually executes, give them their props \u2014 brief, genuine, earned.'
494
+ },
495
+ {
496
+ id: "trust_the_process",
497
+ scope: "response_framing",
498
+ instruction: `When the user is frustrated with slow progress, remind them that consistency beats intensity. "You don't win the Super Bowl in week 3. You win it by showing up for every practice." Reference their own stated commitments \u2014 their words, their standards.`
433
499
  }
434
500
  ]
435
501
  };
@@ -486,17 +552,77 @@ var CALM_LENS = {
486
552
  }
487
553
  ]
488
554
  };
555
+ var BEHAVIORAL_INTERPRETER_LENS = {
556
+ id: "behavioral-interpreter",
557
+ name: "Behavioral Interpreter",
558
+ tagline: "Read patterns, not promises.",
559
+ author: "NeuroverseOS",
560
+ version: "1.0.0",
561
+ description: "Interprets actions as behavioral signals. Prioritizes observed behavior over declared intent, identifies ambiguity, ownership diffusion, resistance, and alignment patterns, and frames outputs around recurring behavior rather than isolated statements.",
562
+ tags: ["behavior", "signals", "alignment", "analysis", "interpretation"],
563
+ stackable: true,
564
+ priority: 65,
565
+ appliesTo: "all",
566
+ tone: {
567
+ formality: "neutral",
568
+ verbosity: "concise",
569
+ emotion: "neutral",
570
+ confidence: "balanced"
571
+ },
572
+ directives: [
573
+ {
574
+ id: "actions_over_claims",
575
+ scope: "response_framing",
576
+ instruction: "Prioritize observed actions, repeated choices, and follow-through over stated intent or self-description. Treat behavior as stronger evidence than promises.",
577
+ example: {
578
+ without: "They said they're committed to the project and will prioritize it going forward.",
579
+ with: "They've said they'll prioritize it three times. Each time, other work was chosen instead. The pattern suggests this is not currently a priority regardless of stated intent."
580
+ }
581
+ },
582
+ {
583
+ id: "pattern_over_incident",
584
+ scope: "behavior_shaping",
585
+ instruction: "Interpret events in sequence. Look for recurring patterns across time rather than over-weighting one isolated incident.",
586
+ example: {
587
+ without: "They missed the deadline. That's a red flag.",
588
+ with: "One missed deadline is an event. Three missed deadlines with similar explanations is a pattern. What does the sequence tell you?"
589
+ }
590
+ },
591
+ {
592
+ id: "flag_ambiguity",
593
+ scope: "behavior_shaping",
594
+ instruction: "Notice ambiguity, indirectness, delayed commitment, and ownership diffusion. Treat these as meaningful signals when they repeat."
595
+ },
596
+ {
597
+ id: "separate_observed_inferred_speculative",
598
+ scope: "content_filtering",
599
+ instruction: "Clearly distinguish between what is directly observed, what is reasonably inferred from patterns, and what remains speculative."
600
+ },
601
+ {
602
+ id: "alignment_read",
603
+ scope: "value_emphasis",
604
+ instruction: "Assess whether words, timing, decisions, and follow-through align. Misalignment between stated priorities and actual behavior should be named clearly.",
605
+ example: {
606
+ without: "They seem supportive of the initiative.",
607
+ with: "They endorsed the initiative publicly but have not allocated budget, time, or personnel to it. Words and resource allocation are misaligned."
608
+ }
609
+ }
610
+ ]
611
+ };
489
612
  var BUILTIN_LENSES = [
490
613
  // Character lenses — each one is a person you'd want in your corner
491
614
  STOIC_LENS,
492
- COACH_LENS,
615
+ LIFE_COACH_LENS,
616
+ NFL_COACH_LENS,
493
617
  CALM_LENS,
494
618
  CLOSER_LENS,
495
619
  SAMURAI_LENS,
496
620
  HYPE_MAN_LENS,
497
621
  MONK_LENS,
498
622
  SOCRATIC_LENS,
499
- MINIMALIST_LENS
623
+ MINIMALIST_LENS,
624
+ // Behavioral lenses — governance overlays that interpret action, not tone
625
+ BEHAVIORAL_INTERPRETER_LENS
500
626
  ];
501
627
  function getLenses() {
502
628
  return BUILTIN_LENSES;
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  McpGovernanceServer,
3
3
  startMcpServer
4
- } from "./chunk-5JUZ4HL7.js";
4
+ } from "./chunk-FDPPZLSQ.js";
5
5
  import "./chunk-AKW5YVCE.js";
6
+ import "./chunk-I4RTIMLX.js";
6
7
  import "./chunk-ZAF6JH23.js";
7
8
  import "./chunk-QLPTHTVB.js";
8
- import "./chunk-BXLTEUS4.js";
9
9
  import "./chunk-QWGCMQQD.js";
10
10
  export {
11
11
  McpGovernanceServer,