@nepopsx/cli 0.0.23 → 0.0.25

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 (132) hide show
  1. package/dist/commands/guard.d.ts +10 -0
  2. package/dist/commands/guard.d.ts.map +1 -0
  3. package/dist/commands/guard.js +63 -0
  4. package/dist/commands/guard.js.map +1 -0
  5. package/dist/commands/import-agents.d.ts +17 -0
  6. package/dist/commands/import-agents.d.ts.map +1 -0
  7. package/dist/commands/import-agents.js +166 -0
  8. package/dist/commands/import-agents.js.map +1 -0
  9. package/dist/commands/import.d.ts +19 -0
  10. package/dist/commands/import.d.ts.map +1 -0
  11. package/dist/commands/import.js +175 -0
  12. package/dist/commands/import.js.map +1 -0
  13. package/dist/commands/init.d.ts.map +1 -1
  14. package/dist/commands/init.js +22 -14
  15. package/dist/commands/init.js.map +1 -1
  16. package/dist/commands/install.js +4 -4
  17. package/dist/commands/install.js.map +1 -1
  18. package/dist/commands/login.d.ts +3 -3
  19. package/dist/commands/login.d.ts.map +1 -1
  20. package/dist/commands/login.js +26 -70
  21. package/dist/commands/login.js.map +1 -1
  22. package/dist/commands/push-learnings.js +1 -1
  23. package/dist/commands/push-learnings.js.map +1 -1
  24. package/dist/commands/sync.d.ts.map +1 -1
  25. package/dist/commands/sync.js +7 -2
  26. package/dist/commands/sync.js.map +1 -1
  27. package/dist/commands/up.js +2 -2
  28. package/dist/commands/up.js.map +1 -1
  29. package/dist/config/api-config.d.ts +7 -0
  30. package/dist/config/api-config.d.ts.map +1 -1
  31. package/dist/config/api-config.js +9 -1
  32. package/dist/config/api-config.js.map +1 -1
  33. package/dist/config/global-config.d.ts +52 -0
  34. package/dist/config/global-config.d.ts.map +1 -0
  35. package/dist/config/global-config.js +161 -0
  36. package/dist/config/global-config.js.map +1 -0
  37. package/dist/config/global-config.test.d.ts +2 -0
  38. package/dist/config/global-config.test.d.ts.map +1 -0
  39. package/dist/config/global-config.test.js +62 -0
  40. package/dist/config/global-config.test.js.map +1 -0
  41. package/dist/guard/policy.d.ts +38 -0
  42. package/dist/guard/policy.d.ts.map +1 -0
  43. package/dist/guard/policy.js +62 -0
  44. package/dist/guard/policy.js.map +1 -0
  45. package/dist/guard/policy.test.d.ts +2 -0
  46. package/dist/guard/policy.test.d.ts.map +1 -0
  47. package/dist/guard/policy.test.js +47 -0
  48. package/dist/guard/policy.test.js.map +1 -0
  49. package/dist/hooks/capture-hooks.d.ts.map +1 -1
  50. package/dist/hooks/capture-hooks.js +36 -1
  51. package/dist/hooks/capture-hooks.js.map +1 -1
  52. package/dist/import/adapter.d.ts +82 -0
  53. package/dist/import/adapter.d.ts.map +1 -0
  54. package/dist/import/adapter.js +111 -0
  55. package/dist/import/adapter.js.map +1 -0
  56. package/dist/import/adapter.test.d.ts +2 -0
  57. package/dist/import/adapter.test.d.ts.map +1 -0
  58. package/dist/import/adapter.test.js +100 -0
  59. package/dist/import/adapter.test.js.map +1 -0
  60. package/dist/import/agents/agent-adapter.d.ts +83 -0
  61. package/dist/import/agents/agent-adapter.d.ts.map +1 -0
  62. package/dist/import/agents/agent-adapter.js +66 -0
  63. package/dist/import/agents/agent-adapter.js.map +1 -0
  64. package/dist/import/agents/agent-adapter.test.d.ts +2 -0
  65. package/dist/import/agents/agent-adapter.test.d.ts.map +1 -0
  66. package/dist/import/agents/agent-adapter.test.js +99 -0
  67. package/dist/import/agents/agent-adapter.test.js.map +1 -0
  68. package/dist/import/agents/artifact-parser.d.ts +26 -0
  69. package/dist/import/agents/artifact-parser.d.ts.map +1 -0
  70. package/dist/import/agents/artifact-parser.js +40 -0
  71. package/dist/import/agents/artifact-parser.js.map +1 -0
  72. package/dist/import/agents/assembler.d.ts +32 -0
  73. package/dist/import/agents/assembler.d.ts.map +1 -0
  74. package/dist/import/agents/assembler.js +62 -0
  75. package/dist/import/agents/assembler.js.map +1 -0
  76. package/dist/import/agents/assembler.test.d.ts +2 -0
  77. package/dist/import/agents/assembler.test.d.ts.map +1 -0
  78. package/dist/import/agents/assembler.test.js +115 -0
  79. package/dist/import/agents/assembler.test.js.map +1 -0
  80. package/dist/import/agents/claude-code-adapter.d.ts +11 -0
  81. package/dist/import/agents/claude-code-adapter.d.ts.map +1 -0
  82. package/dist/import/agents/claude-code-adapter.js +67 -0
  83. package/dist/import/agents/claude-code-adapter.js.map +1 -0
  84. package/dist/import/agents/copilot-agent-adapter.d.ts +12 -0
  85. package/dist/import/agents/copilot-agent-adapter.d.ts.map +1 -0
  86. package/dist/import/agents/copilot-agent-adapter.js +89 -0
  87. package/dist/import/agents/copilot-agent-adapter.js.map +1 -0
  88. package/dist/import/agents/scanner.d.ts +15 -0
  89. package/dist/import/agents/scanner.d.ts.map +1 -0
  90. package/dist/import/agents/scanner.js +87 -0
  91. package/dist/import/agents/scanner.js.map +1 -0
  92. package/dist/import/agents/secret-scan.d.ts +14 -0
  93. package/dist/import/agents/secret-scan.d.ts.map +1 -0
  94. package/dist/import/agents/secret-scan.js +64 -0
  95. package/dist/import/agents/secret-scan.js.map +1 -0
  96. package/dist/import/agents/secret-scan.test.d.ts +2 -0
  97. package/dist/import/agents/secret-scan.test.d.ts.map +1 -0
  98. package/dist/import/agents/secret-scan.test.js +41 -0
  99. package/dist/import/agents/secret-scan.test.js.map +1 -0
  100. package/dist/import/claude-memory-adapter.d.ts +20 -0
  101. package/dist/import/claude-memory-adapter.d.ts.map +1 -0
  102. package/dist/import/claude-memory-adapter.js +87 -0
  103. package/dist/import/claude-memory-adapter.js.map +1 -0
  104. package/dist/import/copilot-adapter.d.ts +13 -0
  105. package/dist/import/copilot-adapter.d.ts.map +1 -0
  106. package/dist/import/copilot-adapter.js +75 -0
  107. package/dist/import/copilot-adapter.js.map +1 -0
  108. package/dist/index.js +28 -7
  109. package/dist/index.js.map +1 -1
  110. package/dist/learnings/memory-index.d.ts +17 -0
  111. package/dist/learnings/memory-index.d.ts.map +1 -0
  112. package/dist/learnings/memory-index.js +73 -0
  113. package/dist/learnings/memory-index.js.map +1 -0
  114. package/dist/licensing/index.d.ts +1 -1
  115. package/dist/licensing/index.d.ts.map +1 -1
  116. package/dist/licensing/index.js +1 -1
  117. package/dist/licensing/index.js.map +1 -1
  118. package/dist/licensing/installer.d.ts +7 -8
  119. package/dist/licensing/installer.d.ts.map +1 -1
  120. package/dist/licensing/installer.js +9 -17
  121. package/dist/licensing/installer.js.map +1 -1
  122. package/dist/licensing/license-manager.d.ts +25 -51
  123. package/dist/licensing/license-manager.d.ts.map +1 -1
  124. package/dist/licensing/license-manager.js +54 -275
  125. package/dist/licensing/license-manager.js.map +1 -1
  126. package/dist/licensing/workspace-name.d.ts +1 -1
  127. package/dist/licensing/workspace-name.js +1 -1
  128. package/dist/mcp/config-generator.d.ts +6 -6
  129. package/dist/mcp/config-generator.d.ts.map +1 -1
  130. package/dist/mcp/config-generator.js +4 -4
  131. package/dist/mcp/config-generator.js.map +1 -1
  132. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -1,21 +1,26 @@
1
+ import { readFileSync } from 'node:fs';
2
+ import { fileURLToPath } from 'node:url';
1
3
  import { Command } from 'commander';
2
4
  import { initCommand } from './commands/init.js';
3
5
  import { upCommand } from './commands/up.js';
4
6
  import { syncCommand } from './commands/sync.js';
5
7
  import { doctorCommand } from './commands/doctor.js';
6
8
  import { installCommand } from './commands/install.js';
7
- import { activateCommand } from './commands/activate.js';
8
9
  import { decodeCommand } from './commands/decode.js';
9
10
  import { loginCommand } from './commands/login.js';
10
11
  import { scanCommand } from './commands/scan.js';
11
12
  import { pushLearningsCommand } from './commands/push-learnings.js';
12
13
  import { captureCommand } from './commands/capture.js';
14
+ import { importCommand } from './commands/import.js';
15
+ import { importAgentsCommand } from './commands/import-agents.js';
16
+ import { guardCommand } from './commands/guard.js';
13
17
  import { serverClearCommand, serverSetCommand, serverShowCommand, } from './commands/server.js';
18
+ const pkg = JSON.parse(readFileSync(fileURLToPath(new URL('../package.json', import.meta.url)), 'utf8'));
14
19
  const program = new Command();
15
20
  program
16
21
  .name('nepopsx')
17
22
  .description('NEPOPSX — AI Agent Platform for Engineering Teams')
18
- .version('0.0.19');
23
+ .version(pkg.version);
19
24
  program
20
25
  .command('up')
21
26
  .description('Guided onboarding: scaffold + resolve the entitled agent + tailor it via your own Copilot/Claude (no API keys) + render. Resumable — safe to re-run.')
@@ -57,11 +62,6 @@ program
57
62
  .description('Validate workspace.yaml and check workspace health')
58
63
  .option('-c, --config <path>', 'Path to workspace.yaml', '.nepopsx/workspace.yaml')
59
64
  .action(doctorCommand);
60
- program
61
- .command('activate <key>')
62
- .description('Activate an NEPOPSX license key for this machine')
63
- .option('-c, --config <path>', 'Path to workspace.yaml', '.nepopsx/workspace.yaml')
64
- .action(activateCommand);
65
65
  program
66
66
  .command('decode <file>')
67
67
  .description('Forensic decode — extract fingerprint from a generated file')
@@ -105,6 +105,27 @@ program
105
105
  .option('--workspace <slug>', 'Workspace slug')
106
106
  .option('--agent <name>', 'Only capture learnings for a specific agent')
107
107
  .action(captureCommand);
108
+ program
109
+ .command('import')
110
+ .description('Ingest existing agent-memory files (GitHub Copilot instructions, Claude project memory) as pending learnings')
111
+ .option('-c, --config <path>', 'Path to workspace.yaml', '.nepopsx/workspace.yaml')
112
+ .option('--workspace <slug>', 'Workspace slug (auto-detected if omitted)')
113
+ .option('--source <source>', 'Which source to import: copilot | claude-memory | all', 'all')
114
+ .option('--agent <name>', 'Attribute imports to this agent (default: the source adapter id)')
115
+ .option('--dry-run', 'Preview candidates without sending anything')
116
+ .option('--force', 'Re-import files already recorded under .nepopsx/imported/')
117
+ .action(importCommand);
118
+ program
119
+ .command('import-agents')
120
+ .description('Comprehend existing custom agents (.claude/agents, .github/agents) into governed PENDING bundles')
121
+ .option('-c, --config <path>', 'Path to workspace.yaml', '.nepopsx/workspace.yaml')
122
+ .option('--workspace <slug>', 'Workspace slug (auto-detected if omitted)')
123
+ .option('--dry-run', 'Preview comprehended bundles + redaction + batch plan without sending')
124
+ .action(importAgentsCommand);
125
+ program
126
+ .command('guard')
127
+ .description('PreToolUse policy hook — blocks dangerous tool calls from .nepopsx/policy.json + built-in rules (reads the hook payload on stdin)')
128
+ .action(guardCommand);
108
129
  program
109
130
  .command('scan')
110
131
  .description('LLM-powered analysis — enrich workspace.yaml and installed agent configs')
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,sBAAsB,CAAC;AAE9B,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,SAAS,CAAC;KACf,WAAW,CAAC,mDAAmD,CAAC;KAChE,OAAO,CAAC,QAAQ,CAAC,CAAC;AAErB,OAAO;KACJ,OAAO,CAAC,IAAI,CAAC;KACb,WAAW,CAAC,sJAAsJ,CAAC;KACnK,MAAM,CAAC,qBAAqB,EAAE,wBAAwB,EAAE,yBAAyB,CAAC;KAClF,MAAM,CAAC,gBAAgB,EAAE,mDAAmD,CAAC;KAC7E,MAAM,CAAC,4BAA4B,EAAE,sEAAsE,CAAC;KAC5G,MAAM,CAAC,UAAU,EAAE,2EAA2E,CAAC;KAC/F,MAAM,CAAC,WAAW,EAAE,kFAAkF,CAAC;KACvG,MAAM,CAAC,SAAS,CAAC,CAAC;AAErB,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,wDAAwD,CAAC;KACrE,MAAM,CAAC,mBAAmB,EAAE,0CAA0C,CAAC;KACvE,MAAM,CAAC,WAAW,CAAC,CAAC;AAEvB,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,6EAA6E,CAAC;KAC1F,MAAM,CAAC,qBAAqB,EAAE,wBAAwB,EAAE,yBAAyB,CAAC;KAClF,MAAM,CAAC,UAAU,EAAE,+DAA+D,CAAC;KACnF,MAAM,CAAC,oBAAoB,EAAE,8CAA8C,CAAC;KAC5E,MAAM,CAAC,WAAW,EAAE,iCAAiC,CAAC;KACtD,MAAM,CAAC,WAAW,EAAE,qDAAqD,CAAC;KAC1E,MAAM,CAAC,mBAAmB,EAAE,uDAAuD,CAAC;KACpF,MAAM,CAAC,OAAO,EAAE,iEAAiE,CAAC;KAClF,MAAM,CAAC,SAAS,EAAE,2EAA2E,CAAC;KAC9F,MAAM,CAAC,WAAW,CAAC,CAAC;AAEvB,OAAO;KACJ,OAAO,CAAC,iBAAiB,CAAC;KAC1B,WAAW,CAAC,gEAAgE,CAAC;KAC7E,MAAM,CAAC,iBAAiB,EAAE,6BAA6B,CAAC;KACxD,MAAM,CAAC,SAAS,EAAE,gEAAgE,CAAC;KACnF,MAAM,CAAC,gBAAgB,EAAE,6DAA6D,CAAC;KACvF,MAAM,CAAC,WAAW,EAAE,qDAAqD,CAAC;KAC1E,MAAM,CAAC,UAAU,EAAE,uEAAuE,CAAC;KAC3F,MAAM,CAAC,4BAA4B,EAAE,+EAA+E,CAAC;KACrH,MAAM,CAAC,cAAc,CAAC,CAAC;AAE1B,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,oDAAoD,CAAC;KACjE,MAAM,CAAC,qBAAqB,EAAE,wBAAwB,EAAE,yBAAyB,CAAC;KAClF,MAAM,CAAC,aAAa,CAAC,CAAC;AAEzB,OAAO;KACJ,OAAO,CAAC,gBAAgB,CAAC;KACzB,WAAW,CAAC,kDAAkD,CAAC;KAC/D,MAAM,CAAC,qBAAqB,EAAE,wBAAwB,EAAE,yBAAyB,CAAC;KAClF,MAAM,CAAC,eAAe,CAAC,CAAC;AAE3B,OAAO;KACJ,OAAO,CAAC,eAAe,CAAC;KACxB,WAAW,CAAC,6DAA6D,CAAC;KAC1E,MAAM,CAAC,aAAa,CAAC,CAAC;AAEzB,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,oGAAoG,CAAC;KACjH,MAAM,CAAC,qBAAqB,EAAE,wBAAwB,EAAE,yBAAyB,CAAC;KAClF,MAAM,CAAC,cAAc,EAAE,wDAAwD,CAAC;KAChF,MAAM,CAAC,YAAY,CAAC,CAAC;AAExB,MAAM,aAAa,GAAG,OAAO;KAC1B,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,0DAA0D,CAAC,CAAC;AAE3E,aAAa;KACV,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,+CAA+C,CAAC;KAC5D,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAE7B,aAAa;KACV,OAAO,CAAC,WAAW,CAAC;KACpB,WAAW,CAAC,+DAA+D,CAAC;KAC5E,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAE5B,aAAa;KACV,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,0DAA0D,CAAC;KACvE,MAAM,CAAC,kBAAkB,CAAC,CAAC;AAE9B,SAAS,iBAAiB,CAAC,KAAa,EAAE,QAAkB;IAC1D,OAAO,CAAC,GAAG,QAAQ,EAAE,KAAK,CAAC,CAAC;AAC9B,CAAC;AAED,OAAO;KACJ,OAAO,CAAC,gBAAgB,CAAC;KACzB,WAAW,CAAC,sEAAsE,CAAC;KACnF,MAAM,CAAC,qBAAqB,EAAE,wBAAwB,EAAE,yBAAyB,CAAC;KAClF,MAAM,CAAC,oBAAoB,EAAE,gBAAgB,CAAC;KAC9C,MAAM,CAAC,gBAAgB,EAAE,0CAA0C,CAAC;KACpE,MAAM,CAAC,WAAW,EAAE,oBAAoB,CAAC;KACzC,MAAM,CAAC,oBAAoB,CAAC,CAAC;AAEhC,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,gHAAgH,CAAC;KAC7H,MAAM,CAAC,qBAAqB,EAAE,wBAAwB,EAAE,yBAAyB,CAAC;KAClF,MAAM,CAAC,oBAAoB,EAAE,gBAAgB,CAAC;KAC9C,MAAM,CAAC,gBAAgB,EAAE,6CAA6C,CAAC;KACvE,MAAM,CAAC,cAAc,CAAC,CAAC;AAE1B,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,0EAA0E,CAAC;KACvF,MAAM,CAAC,WAAW,EAAE,wBAAwB,CAAC;KAC7C,MAAM,CAAC,mBAAmB,EAAE,sDAAsD,CAAC;KACnF,MAAM,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;KAC1C,MAAM,CAAC,kBAAkB,EAAE,4DAA4D,CAAC;KACxF,MAAM,CAAC,mBAAmB,EAAE,0BAA0B,EAAE,OAAO,CAAC;KAChE,MAAM,CAAC,yBAAyB,EAAE,qCAAqC,EAAE,OAAO,CAAC;KACjF,MAAM,CAAC,gBAAgB,EAAE,6BAA6B,EAAE,GAAG,CAAC;KAC5D,MAAM,CAAC,WAAW,EAAE,yCAAyC,CAAC;KAC9D,MAAM,CAAC,WAAW,EAAE,wCAAwC,CAAC;KAC7D,MAAM,CAAC,eAAe,EAAE,oCAAoC,CAAC;KAC7D,MAAM,CAAC,kBAAkB,EAAE,+BAA+B,EAAE,iBAAiB,EAAE,EAAE,CAAC;KAClF,MAAM,CAAC,SAAS,EAAE,2DAA2D,CAAC;KAC9E,MAAM,CAAC,gBAAgB,EAAE,qDAAqD,CAAC;KAC/E,MAAM,CAAC,UAAU,EAAE,mEAAmE,CAAC;KACvF,MAAM,CAAC,WAAW,CAAC,CAAC;AAEvB,OAAO,CAAC,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * `.nepopsx/MEMORY.md` — a generated, git-committed, human-scannable index of the
3
+ * local learning store, modeled on `~/.claude/MEMORY.md`.
4
+ *
5
+ * One line per learning (title → status → one-line hook → link), so the store is
6
+ * reviewable in a PR diff. Regenerated by `nepopsx import` and `nepopsx sync`. It
7
+ * scans both the hand-authored `learnings/` dir and the imported provenance dir.
8
+ */
9
+ /**
10
+ * Regenerate `<rootDir>/.nepopsx/MEMORY.md`. Returns the count of indexed learnings
11
+ * and the index path. Best-effort: never throws.
12
+ */
13
+ export declare function regenerateMemoryIndex(rootDir: string): {
14
+ count: number;
15
+ path: string;
16
+ };
17
+ //# sourceMappingURL=memory-index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-index.d.ts","sourceRoot":"","sources":["../../src/learnings/memory-index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAsBH;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CA4CtF"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * `.nepopsx/MEMORY.md` — a generated, git-committed, human-scannable index of the
3
+ * local learning store, modeled on `~/.claude/MEMORY.md`.
4
+ *
5
+ * One line per learning (title → status → one-line hook → link), so the store is
6
+ * reviewable in a PR diff. Regenerated by `nepopsx import` and `nepopsx sync`. It
7
+ * scans both the hand-authored `learnings/` dir and the imported provenance dir.
8
+ */
9
+ import { existsSync, mkdirSync, writeFileSync } from 'node:fs';
10
+ import { relative, resolve } from 'node:path';
11
+ import { loadLearningFiles } from './yaml-learnings.js';
12
+ const NEPOPSX_DIR = '.nepopsx';
13
+ /** First non-empty content line, trimmed to a short hook for the index. */
14
+ function hook(content) {
15
+ const line = content
16
+ .split(/\r?\n/)
17
+ .map((l) => l.replace(/^[#>*\-\s]+/, '').trim())
18
+ .find((l) => l.length > 0);
19
+ if (!line)
20
+ return '';
21
+ return line.length > 100 ? `${line.slice(0, 97)}…` : line;
22
+ }
23
+ function titleFromSlug(slug) {
24
+ return slug.replace(/-/g, ' ').replace(/\b\w/g, (c) => c.toUpperCase());
25
+ }
26
+ /**
27
+ * Regenerate `<rootDir>/.nepopsx/MEMORY.md`. Returns the count of indexed learnings
28
+ * and the index path. Best-effort: never throws.
29
+ */
30
+ export function regenerateMemoryIndex(rootDir) {
31
+ const base = resolve(rootDir, NEPOPSX_DIR);
32
+ const indexPath = resolve(base, 'MEMORY.md');
33
+ const files = [
34
+ ...loadLearningFiles(resolve(base, 'learnings')),
35
+ ...loadLearningFiles(resolve(base, 'imported')),
36
+ ];
37
+ // De-dupe by slug (a learning may exist both locally and as an import record);
38
+ // keep the first seen (learnings/ is scanned first).
39
+ const bySlug = new Map();
40
+ for (const f of files) {
41
+ if (!bySlug.has(f.learning.slug))
42
+ bySlug.set(f.learning.slug, f);
43
+ }
44
+ const entries = [...bySlug.values()].sort((a, b) => a.learning.slug.localeCompare(b.learning.slug));
45
+ const lines = [
46
+ '# NEPOPSX Memory Index',
47
+ '',
48
+ '<!-- Generated by `nepopsx import` / `nepopsx sync`. Do not edit by hand. -->',
49
+ '',
50
+ ];
51
+ if (entries.length === 0) {
52
+ lines.push('_No local learnings yet. Run `nepopsx import` or let the reflector capture some._', '');
53
+ }
54
+ else {
55
+ for (const { learning, filePath } of entries) {
56
+ const rel = relative(base, filePath);
57
+ const h = hook(learning.content);
58
+ const tags = [learning.status, learning.type].filter(Boolean).join(' · ');
59
+ lines.push(`- [${titleFromSlug(learning.slug)}](${rel}) — ${tags}${h ? ` — ${h}` : ''}`);
60
+ }
61
+ lines.push('');
62
+ }
63
+ try {
64
+ if (!existsSync(base))
65
+ mkdirSync(base, { recursive: true });
66
+ writeFileSync(indexPath, lines.join('\n'), 'utf-8');
67
+ }
68
+ catch {
69
+ /* best-effort */
70
+ }
71
+ return { count: entries.length, path: indexPath };
72
+ }
73
+ //# sourceMappingURL=memory-index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-index.js","sourceRoot":"","sources":["../../src/learnings/memory-index.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Licensing barrel — re-export all licensing modules.
3
3
  */
4
- export { readLicense, writeLicense, reconcileLicenseWorkspace, activateLicense, validateLicense, resolveEntitlement, enforceTierLimits, isDevMode, type ActivationResult, type RefreshResult, type TierViolation, } from './license-manager.js';
4
+ export { readLicense, writeLicense, reconcileLicenseWorkspace, validateLicense, resolveEntitlement, enforceTierLimits, isDevMode, type TierViolation, } from './license-manager.js';
5
5
  export { getCachedEntitlement, setCachedEntitlement, clearCachedEntitlement, serverEnforces, } from './entitlement-cache.js';
6
6
  export { fetchRemoteTemplates, type TemplateBundle, } from './template-fetch.js';
7
7
  export { applySteganography, decodeSteganography, forensicDecode, fingerprintToId, } from './fingerprint.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/licensing/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,WAAW,EACX,YAAY,EACZ,yBAAyB,EACzB,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,iBAAiB,EACjB,SAAS,EACT,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,KAAK,aAAa,GACnB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,sBAAsB,EACtB,cAAc,GACf,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,oBAAoB,EACpB,KAAK,cAAc,GACpB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,EACd,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,oBAAoB,EACpB,yBAAyB,EACzB,iBAAiB,GAClB,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/licensing/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,WAAW,EACX,YAAY,EACZ,yBAAyB,EACzB,eAAe,EACf,kBAAkB,EAClB,iBAAiB,EACjB,SAAS,EACT,KAAK,aAAa,GACnB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,sBAAsB,EACtB,cAAc,GACf,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,oBAAoB,EACpB,KAAK,cAAc,GACpB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,EACd,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,oBAAoB,EACpB,yBAAyB,EACzB,iBAAiB,GAClB,MAAM,qBAAqB,CAAC"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Licensing barrel — re-export all licensing modules.
3
3
  */
4
- export { readLicense, writeLicense, reconcileLicenseWorkspace, activateLicense, validateLicense, resolveEntitlement, enforceTierLimits, isDevMode, } from './license-manager.js';
4
+ export { readLicense, writeLicense, reconcileLicenseWorkspace, validateLicense, resolveEntitlement, enforceTierLimits, isDevMode, } from './license-manager.js';
5
5
  export { getCachedEntitlement, setCachedEntitlement, clearCachedEntitlement, serverEnforces, } from './entitlement-cache.js';
6
6
  export { fetchRemoteTemplates, } from './template-fetch.js';
7
7
  export { applySteganography, decodeSteganography, forensicDecode, fingerprintToId, } from './fingerprint.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/licensing/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,WAAW,EACX,YAAY,EACZ,yBAAyB,EACzB,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,iBAAiB,EACjB,SAAS,GAIV,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,sBAAsB,EACtB,cAAc,GACf,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,oBAAoB,GAErB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,EACd,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,oBAAoB,EACpB,yBAAyB,EACzB,iBAAiB,GAClB,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/licensing/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,WAAW,EACX,YAAY,EACZ,yBAAyB,EACzB,eAAe,EACf,kBAAkB,EAClB,iBAAiB,EACjB,SAAS,GAEV,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,sBAAsB,EACtB,cAAc,GACf,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,oBAAoB,GAErB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,EACd,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,oBAAoB,EACpB,yBAAyB,EACzB,iBAAiB,GAClB,MAAM,qBAAqB,CAAC"}
@@ -1,10 +1,10 @@
1
1
  /**
2
- * Agent bundle installer — downloads, decrypts, verifies, and writes
2
+ * Agent bundle installer — downloads, decodes, verifies, and writes
3
3
  * agent template files from the NEPOPSX API.
4
4
  *
5
5
  * Flow:
6
- * 1. downloadBundle — POST /v1/templates/:agent/:version (auth: Bearer <key>)
7
- * 2. decryptBundle — AES-256-GCM, key = SHA-256(licenseKey + ":nepopsx-template-key")
6
+ * 1. downloadBundle — POST /v1/templates/:agent/:version (auth: Bearer <device token>)
7
+ * 2. decryptBundle — base64-decode the plaintext payload (served over TLS)
8
8
  * 3. verifyBundleSha — SHA-256 of raw JSON must match server-provided sha256
9
9
  * 4. writeAgentFiles — atomic write via temp + rename into .github/<relative-path>
10
10
  */
@@ -12,8 +12,6 @@ import type { License, OutputProvider } from "@nepopsx/core";
12
12
  import type { CustomInstruction } from "../generator/render.js";
13
13
  export interface EncryptedBundle {
14
14
  payload: string;
15
- iv: string;
16
- tag: string;
17
15
  agent: string;
18
16
  version: string;
19
17
  sha256: string;
@@ -33,10 +31,11 @@ export interface AgentBootstrapConfig {
33
31
  export declare function downloadBundle(cwd: string, license: License, agent: string, version: string, customInstructions?: CustomInstruction[], providers?: OutputProvider[]): Promise<EncryptedBundle>;
34
32
  export declare function downloadBootstrapConfig(cwd: string, license: License, agent: string, version: string, customInstructions?: CustomInstruction[]): Promise<AgentBootstrapConfig>;
35
33
  /**
36
- * Decrypt an AES-256-GCM bundle using the license key.
37
- * Returns the raw JSON string (not yet parsed).
34
+ * Decode a bundle payload. The backend now serves plaintext base64 over TLS to an
35
+ * authenticated request (no at-rest encryption). Returns the raw JSON string. The
36
+ * second arg is accepted-and-ignored for call-site compatibility.
38
37
  */
39
- export declare function decryptBundle(bundle: EncryptedBundle, licenseKey: string): string;
38
+ export declare function decryptBundle(bundle: EncryptedBundle, _credential?: string): string;
40
39
  /**
41
40
  * Verify that the decrypted JSON matches the server's sha256.
42
41
  * Throws if the digest does not match.
@@ -1 +1 @@
1
- {"version":3,"file":"installer.d.ts","sourceRoot":"","sources":["../../src/licensing/installer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAOH,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAG7D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAIhE,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAID;;GAEG;AACH,wBAAsB,cAAc,CAClC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,kBAAkB,GAAE,iBAAiB,EAAO,EAC5C,SAAS,GAAE,cAAc,EAAO,GAC/B,OAAO,CAAC,eAAe,CAAC,CA2B1B;AAED,wBAAsB,uBAAuB,CAC3C,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,kBAAkB,GAAE,iBAAiB,EAAO,GAC3C,OAAO,CAAC,oBAAoB,CAAC,CA6B/B;AAID;;;GAGG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAcjF;AAID;;;GAGG;AACH,wBAAgB,eAAe,CAAC,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAOhF;AAID;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAChC,aAAa,EAAE,CAmBjB"}
1
+ {"version":3,"file":"installer.d.ts","sourceRoot":"","sources":["../../src/licensing/installer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAOH,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAG7D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAIhE,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAID;;GAEG;AACH,wBAAsB,cAAc,CAClC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,kBAAkB,GAAE,iBAAiB,EAAO,EAC5C,SAAS,GAAE,cAAc,EAAO,GAC/B,OAAO,CAAC,eAAe,CAAC,CA2B1B;AAED,wBAAsB,uBAAuB,CAC3C,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,kBAAkB,GAAE,iBAAiB,EAAO,GAC3C,OAAO,CAAC,oBAAoB,CAAC,CA6B/B;AAID;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,eAAe,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAEnF;AAID;;;GAGG;AACH,wBAAgB,eAAe,CAAC,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAOhF;AAID;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAChC,aAAa,EAAE,CAmBjB"}
@@ -1,14 +1,14 @@
1
1
  /**
2
- * Agent bundle installer — downloads, decrypts, verifies, and writes
2
+ * Agent bundle installer — downloads, decodes, verifies, and writes
3
3
  * agent template files from the NEPOPSX API.
4
4
  *
5
5
  * Flow:
6
- * 1. downloadBundle — POST /v1/templates/:agent/:version (auth: Bearer <key>)
7
- * 2. decryptBundle — AES-256-GCM, key = SHA-256(licenseKey + ":nepopsx-template-key")
6
+ * 1. downloadBundle — POST /v1/templates/:agent/:version (auth: Bearer <device token>)
7
+ * 2. decryptBundle — base64-decode the plaintext payload (served over TLS)
8
8
  * 3. verifyBundleSha — SHA-256 of raw JSON must match server-provided sha256
9
9
  * 4. writeAgentFiles — atomic write via temp + rename into .github/<relative-path>
10
10
  */
11
- import { createDecipheriv, createHash } from "node:crypto";
11
+ import { createHash } from "node:crypto";
12
12
  import { existsSync, mkdirSync, renameSync, writeFileSync } from "node:fs";
13
13
  import { dirname, join } from "node:path";
14
14
  import { resolveApiBase } from "../config/api-config.js";
@@ -65,20 +65,12 @@ export async function downloadBootstrapConfig(cwd, license, agent, version, cust
65
65
  }
66
66
  // ─── Decrypt ────────────────────────────────────────────────
67
67
  /**
68
- * Decrypt an AES-256-GCM bundle using the license key.
69
- * Returns the raw JSON string (not yet parsed).
68
+ * Decode a bundle payload. The backend now serves plaintext base64 over TLS to an
69
+ * authenticated request (no at-rest encryption). Returns the raw JSON string. The
70
+ * second arg is accepted-and-ignored for call-site compatibility.
70
71
  */
71
- export function decryptBundle(bundle, licenseKey) {
72
- const key = createHash("sha256")
73
- .update(`${licenseKey}:nepopsx-template-key`)
74
- .digest();
75
- const iv = Buffer.from(bundle.iv, "base64");
76
- const tag = Buffer.from(bundle.tag, "base64");
77
- const encrypted = Buffer.from(bundle.payload, "base64");
78
- const decipher = createDecipheriv("aes-256-gcm", key, iv);
79
- decipher.setAuthTag(tag);
80
- const decrypted = Buffer.concat([decipher.update(encrypted), decipher.final()]);
81
- return decrypted.toString("utf-8");
72
+ export function decryptBundle(bundle, _credential) {
73
+ return Buffer.from(bundle.payload, "base64").toString("utf-8");
82
74
  }
83
75
  // ─── Verify ─────────────────────────────────────────────────
84
76
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"installer.js","sourceRoot":"","sources":["../../src/licensing/installer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"installer.js","sourceRoot":"","sources":["../../src/licensing/installer.ts"],"names":[],"mappings":"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"}
@@ -1,53 +1,33 @@
1
1
  /**
2
- * License manager handles license activation, validation,
3
- * online refresh, and tier-based feature gating.
2
+ * Auth/session helpers. Post-migration the CLI has ONE credential: the opaque
3
+ * device token from `nepopsx login`, stored in the GLOBAL `~/.nepopsx/config.json`
4
+ * (never in the repo — see {@link readAuth}). The `License` shape is kept as a thin
5
+ * compatibility view — `.key` IS the device token — so existing commands send the
6
+ * right Bearer credential unchanged. Auth and entitlement are server-authoritative
7
+ * now (the backend 401/402s); there is no license.json, no machine binding, and no
8
+ * online validate/refresh.
4
9
  */
5
10
  import { type License, type LicenseStatus, type LicenseTier, type WorkspaceConfig, type Entitlement } from '@nepopsx/core';
6
11
  /**
7
- * Read the local license file. Returns null if not found or invalid.
12
+ * Build a `License`-shaped view from the stored device token. `.key` IS the opaque
13
+ * `opsx_dvc_…` token sent as a Bearer credential; `org`/`tier` come from the plan
14
+ * captured at login; `workspace` is the live local name. Returns null if not
15
+ * logged in. (No license.json — the device token in config.json is the credential.)
8
16
  */
9
17
  export declare function readLicense(rootDir: string): License | null;
18
+ /** No-op: the workspace is sourced live from disk in `readLicense` now. */
19
+ export declare function reconcileLicenseWorkspace<T extends License | null>(_rootDir: string, license: T): T;
20
+ /** No-op kept for callers: there is no license.json to write any more. */
21
+ export declare function writeLicense(_rootDir: string, _license: License): void;
10
22
  /**
11
- * Write license to disk. Creates .nepopsx/ if needed.
23
+ * Confirm a device token is present. Auth + entitlement are enforced by the
24
+ * backend (401/402) — this no longer calls the server.
12
25
  */
13
- export declare function writeLicense(rootDir: string, license: License): void;
26
+ export declare function validateLicense(rootDir: string, _config: WorkspaceConfig): Promise<LicenseStatus>;
14
27
  /**
15
- * Heal the license's `workspace` field against the live `workspace.yaml`.
16
- *
17
- * The license is activated before `workspace.yaml` exists, so it is born with
18
- * `workspace: "unknown"`. Once the real config exists, reconcile the in-memory
19
- * license (and persist it) so every downstream `license.workspace` read — and
20
- * every backend call derived from it — uses the live workspace name instead of
21
- * the stale snapshot. Best-effort: returns the license unchanged when the config
22
- * is absent or already matches. Accepts/returns `null` for the no-license path.
23
- */
24
- export declare function reconcileLicenseWorkspace<T extends License | null>(rootDir: string, license: T): T;
25
- export interface ActivationResult {
26
- success: boolean;
27
- license?: License;
28
- error?: string;
29
- }
30
- /**
31
- * Activate a license key for this machine + workspace.
32
- * Calls the remote API to validate the key and bind it.
33
- */
34
- export declare function activateLicense(rootDir: string, licenseKey: string, workspaceName: string): Promise<ActivationResult>;
35
- /**
36
- * Validate the current license. Attempts online refresh if expired.
37
- * Returns detailed status.
38
- */
39
- export declare function validateLicense(rootDir: string, config: WorkspaceConfig): Promise<LicenseStatus>;
40
- /** Result of a successful refresh: the updated license + the org's entitlement (if returned). */
41
- export interface RefreshResult {
42
- license: License;
43
- entitlement?: Entitlement;
44
- }
45
- /**
46
- * Resolve the org's entitlement for DISPLAY: cache → synthesized from the plan manifest +
47
- * the license's (denormalized) tier when offline or on an older backend. Never throws.
48
- *
49
- * This is advisory only — the backend's 402 responses are the single hard authority. Use it
50
- * to show the user their current plan/limits, not to allow/deny an operation locally.
28
+ * Resolve the org's entitlement for DISPLAY: cache → synthesized from the plan
29
+ * manifest + the session's plan. Advisory only — the backend's 402s are the hard
30
+ * authority. Never throws.
51
31
  */
52
32
  export declare function resolveEntitlement(rootDir: string, license: License): Promise<Entitlement>;
53
33
  export interface TierViolation {
@@ -57,17 +37,11 @@ export interface TierViolation {
57
37
  required_tier: LicenseTier;
58
38
  }
59
39
  /**
60
- * Check whether the workspace config exceeds the license tier's scale limits.
61
- *
62
- * **Advisory only (ADR 0001/0002):** the server is the enforcement authority. Callers should
63
- * surface violations as a *warning* + upgrade hint and proceed; they must not hard-block on
64
- * this result. Agent quality (customs, philosophy, prompts) is identical across all tiers —
65
- * the differentiators are scale (services / agent packages) and tooling access (LLM scan).
40
+ * Check whether the workspace config exceeds the tier's scale limits.
41
+ * **Advisory only** — the server is the enforcement authority (402). Surface as a
42
+ * warning + upgrade hint and proceed; never hard-block on this result.
66
43
  */
67
44
  export declare function enforceTierLimits(config: WorkspaceConfig, tier: LicenseTier): TierViolation[];
68
- /**
69
- * Check if the CLI is running in dev mode (for NEPOPSX agent developers).
70
- * Set NEPOPSX_DEV=1 to bypass license checks.
71
- */
45
+ /** Set NEPOPSX_DEV=1 to bypass auth checks (for NEPOPSX agent developers). */
72
46
  export declare function isDevMode(): boolean;
73
47
  //# sourceMappingURL=license-manager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"license-manager.d.ts","sourceRoot":"","sources":["../../src/licensing/license-manager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EACL,KAAK,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,WAAW,EAAmB,KAAK,eAAe,EACzF,KAAK,WAAW,EAGjB,MAAM,eAAe,CAAC;AAavB;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAiB3D;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAUpE;AAED;;;;;;;;;GASG;AACH,wBAAgB,yBAAyB,CAAC,CAAC,SAAS,OAAO,GAAG,IAAI,EAChE,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,CAAC,GACT,CAAC,CAWH;AAID,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,gBAAgB,CAAC,CAoD3B;AAID;;;GAGG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,aAAa,CAAC,CA8IxB;AAID,iGAAiG;AACjG,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAmDD;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,CAchG;AAID,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,WAAW,CAAC;CAC5B;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,WAAW,GAAG,aAAa,EAAE,CA4B7F;AAID;;;GAGG;AACH,wBAAgB,SAAS,IAAI,OAAO,CAEnC"}
1
+ {"version":3,"file":"license-manager.d.ts","sourceRoot":"","sources":["../../src/licensing/license-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,WAAW,EAIjB,MAAM,eAAe,CAAC;AAQvB;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAe3D;AAED,2EAA2E;AAC3E,wBAAgB,yBAAyB,CAAC,CAAC,SAAS,OAAO,GAAG,IAAI,EAChE,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,CAAC,GACT,CAAC,CAEH;AAED,0EAA0E;AAC1E,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI,CAEtE;AAID;;;GAGG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,aAAa,CAAC,CA0BxB;AAID;;;;GAIG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,WAAW,CAAC,CActB;AAID,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,WAAW,CAAC;CAC5B;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,eAAe,EACvB,IAAI,EAAE,WAAW,GAChB,aAAa,EAAE,CA4BjB;AAID,8EAA8E;AAC9E,wBAAgB,SAAS,IAAI,OAAO,CAEnC"}