aura-code 0.3.7 → 0.5.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 (109) hide show
  1. package/README.md +54 -2
  2. package/dist/agent/compactor.d.ts +26 -0
  3. package/dist/agent/compactor.js +156 -0
  4. package/dist/agent/compactor.js.map +1 -0
  5. package/dist/agent/design.d.ts +17 -0
  6. package/dist/agent/design.js +175 -0
  7. package/dist/agent/design.js.map +1 -0
  8. package/dist/agent/loop.js +8 -1
  9. package/dist/agent/loop.js.map +1 -1
  10. package/dist/agent/system-prompt.d.ts +1 -1
  11. package/dist/agent/system-prompt.js +5 -2
  12. package/dist/agent/system-prompt.js.map +1 -1
  13. package/dist/cli/display.js +40 -4
  14. package/dist/cli/display.js.map +1 -1
  15. package/dist/cli/index.js +258 -44
  16. package/dist/cli/index.js.map +1 -1
  17. package/dist/config/defaults.js +1 -1
  18. package/dist/config/defaults.js.map +1 -1
  19. package/dist/config/project-config.d.ts +6 -0
  20. package/dist/config/project-config.js +2 -0
  21. package/dist/config/project-config.js.map +1 -1
  22. package/dist/dream/dream.d.ts +48 -0
  23. package/dist/dream/dream.js +187 -0
  24. package/dist/dream/dream.js.map +1 -0
  25. package/dist/kanban/index.d.ts +5 -0
  26. package/dist/kanban/index.js +11 -0
  27. package/dist/kanban/index.js.map +1 -0
  28. package/dist/kanban/pipeline.d.ts +16 -0
  29. package/dist/kanban/pipeline.js +910 -0
  30. package/dist/kanban/pipeline.js.map +1 -0
  31. package/dist/kanban/server.d.ts +5 -0
  32. package/dist/kanban/server.js +820 -0
  33. package/dist/kanban/server.js.map +1 -0
  34. package/dist/kanban/types.d.ts +75 -0
  35. package/dist/kanban/types.js +6 -0
  36. package/dist/kanban/types.js.map +1 -0
  37. package/dist/learnlight/driven.d.ts +2 -0
  38. package/dist/learnlight/driven.js +109 -0
  39. package/dist/learnlight/driven.js.map +1 -0
  40. package/dist/learnlight/index.d.ts +4 -0
  41. package/dist/learnlight/index.js +32 -0
  42. package/dist/learnlight/index.js.map +1 -0
  43. package/dist/learnlight/lesson-prep.d.ts +36 -0
  44. package/dist/learnlight/lesson-prep.js +224 -0
  45. package/dist/learnlight/lesson-prep.js.map +1 -0
  46. package/dist/learnlight/report.d.ts +2 -0
  47. package/dist/learnlight/report.js +37 -0
  48. package/dist/learnlight/report.js.map +1 -0
  49. package/dist/learnlight/types.d.ts +72 -0
  50. package/dist/learnlight/types.js +6 -0
  51. package/dist/learnlight/types.js.map +1 -0
  52. package/dist/perception/graph-store.d.ts +11 -0
  53. package/dist/perception/graph-store.js +33 -0
  54. package/dist/perception/graph-store.js.map +1 -1
  55. package/dist/perception/index.d.ts +1 -1
  56. package/dist/perception/index.js +2 -1
  57. package/dist/perception/index.js.map +1 -1
  58. package/dist/providers/factory.d.ts +16 -0
  59. package/dist/providers/factory.js +72 -0
  60. package/dist/providers/factory.js.map +1 -1
  61. package/dist/providers/openai-compatible.js +80 -49
  62. package/dist/providers/openai-compatible.js.map +1 -1
  63. package/dist/research/council.d.ts +26 -0
  64. package/dist/research/council.js +225 -0
  65. package/dist/research/council.js.map +1 -0
  66. package/dist/research/research.d.ts +24 -0
  67. package/dist/research/research.js +116 -0
  68. package/dist/research/research.js.map +1 -0
  69. package/dist/ruby/alternator.d.ts +36 -1
  70. package/dist/ruby/alternator.js +40 -31
  71. package/dist/ruby/alternator.js.map +1 -1
  72. package/dist/ruby/stats.js +10 -11
  73. package/dist/ruby/stats.js.map +1 -1
  74. package/dist/ruby/types.js +1 -1
  75. package/dist/ruby/types.js.map +1 -1
  76. package/dist/safety/permissions.d.ts +8 -0
  77. package/dist/safety/permissions.js +12 -0
  78. package/dist/safety/permissions.js.map +1 -1
  79. package/dist/setup/provider-registry.js +14 -0
  80. package/dist/setup/provider-registry.js.map +1 -1
  81. package/dist/setup/provider-test.js +24 -2
  82. package/dist/setup/provider-test.js.map +1 -1
  83. package/dist/setup/telegram-wizard.d.ts +57 -0
  84. package/dist/setup/telegram-wizard.js +343 -0
  85. package/dist/setup/telegram-wizard.js.map +1 -0
  86. package/dist/tools/audio-transcribe.d.ts +20 -0
  87. package/dist/tools/audio-transcribe.js +39 -28
  88. package/dist/tools/audio-transcribe.js.map +1 -1
  89. package/dist/tools/gmail-tool.d.ts +11 -0
  90. package/dist/tools/gmail-tool.js +221 -0
  91. package/dist/tools/gmail-tool.js.map +1 -0
  92. package/dist/tools/read-file.js +13 -0
  93. package/dist/tools/read-file.js.map +1 -1
  94. package/dist/tools/telegram-bot.js +103 -18
  95. package/dist/tools/telegram-bot.js.map +1 -1
  96. package/dist/tools/telegram-voice.d.ts +22 -0
  97. package/dist/tools/telegram-voice.js +203 -0
  98. package/dist/tools/telegram-voice.js.map +1 -0
  99. package/dist/tools/telegram.d.ts +6 -1
  100. package/dist/tools/telegram.js +115 -5
  101. package/dist/tools/telegram.js.map +1 -1
  102. package/dist/tools/video-render.d.ts +11 -0
  103. package/dist/tools/video-render.js +189 -0
  104. package/dist/tools/video-render.js.map +1 -0
  105. package/dist/util/errors.js +6 -0
  106. package/dist/util/errors.js.map +1 -1
  107. package/dist/viz/index.js +816 -30
  108. package/dist/viz/index.js.map +1 -1
  109. package/package.json +2 -1
@@ -71,7 +71,7 @@ function createTerminalDisplay() {
71
71
  console.error('\n' + chalk_1.default.hex('#b15439')(` ✗ ${msg}`));
72
72
  },
73
73
  header(title, subtitle) {
74
- const w = Math.min((process.stdout.columns ?? 80) - 2, 72);
74
+ const w = Math.min((process.stdout.columns ?? 80) - 2, 144);
75
75
  const pad = (s) => ` ${s}`;
76
76
  console.log('');
77
77
  console.log(boxTop(w));
@@ -81,14 +81,17 @@ function createTerminalDisplay() {
81
81
  console.log(boxBottom(w));
82
82
  },
83
83
  summary(text, turns, toolCount) {
84
- const w = Math.min((process.stdout.columns ?? 80) - 2, 72);
84
+ const w = Math.min((process.stdout.columns ?? 80) - 2, 144);
85
85
  const pad = (s) => ` ${s}`;
86
86
  console.log('');
87
87
  console.log(boxTop(w));
88
88
  console.log(boxLine(chalk_1.default.hex('#5a9e6e').bold(pad('✓ Done')), w));
89
89
  console.log(boxLine(chalk_1.default.hex('#8a7768')(pad(`${turns} turn${turns > 1 ? 's' : ''} · ${toolCount} tool call${toolCount > 1 ? 's' : ''}`)), w));
90
90
  if (text) {
91
- text.split('\n').forEach(l => console.log(boxLine(chalk_1.default.hex('#c8b5a0')(pad(l)), w)));
91
+ const innerWidth = Math.max(w - 4, 10); // w - 2 (border chars) - 2 (pad()'s leading spaces)
92
+ text.split('\n').forEach(l => {
93
+ wrapLine(l, innerWidth).forEach(wl => console.log(boxLine(chalk_1.default.hex('#c8b5a0')(pad(wl)), w)));
94
+ });
92
95
  }
93
96
  console.log(boxBottom(w) + '\n');
94
97
  },
@@ -104,7 +107,7 @@ function createTerminalDisplay() {
104
107
  console.log(chalk_1.default.hex(colour)(` ◯ Circuit ${info.provider}: ${info.state}`));
105
108
  },
106
109
  showPlan(plan) {
107
- const w = Math.min((process.stdout.columns ?? 80) - 2, 72);
110
+ const w = Math.min((process.stdout.columns ?? 80) - 2, 144);
108
111
  const pad = (s) => ` ${s}`;
109
112
  // Build a position map so dependency arrows show step numbers, not raw UUIDs
110
113
  const idxMap = new Map(plan.steps.map((s, i) => [s.id, i + 1]));
@@ -141,6 +144,39 @@ function boxTop(width, color = '#4e3d30') {
141
144
  const inner = '─'.repeat(Math.max(width - 2, 2));
142
145
  return chalk_1.default.hex(color)(`┌${inner}┐`);
143
146
  }
147
+ /** Word-wrap a single line to fit within `width` visible characters. Breaks
148
+ * on whitespace; a token longer than `width` alone is hard-broken rather
149
+ * than left to overflow. Used so long lines (markdown table rows, bullet
150
+ * points) flow across multiple box lines instead of being truncated. */
151
+ function wrapLine(text, width) {
152
+ if (text.length <= width)
153
+ return [text];
154
+ const words = text.split(' ');
155
+ const out = [];
156
+ let current = '';
157
+ for (const word of words) {
158
+ if (word.length > width) {
159
+ if (current) {
160
+ out.push(current);
161
+ current = '';
162
+ }
163
+ for (let i = 0; i < word.length; i += width)
164
+ out.push(word.slice(i, i + width));
165
+ continue;
166
+ }
167
+ const candidate = current ? `${current} ${word}` : word;
168
+ if (candidate.length > width) {
169
+ out.push(current);
170
+ current = word;
171
+ }
172
+ else {
173
+ current = candidate;
174
+ }
175
+ }
176
+ if (current)
177
+ out.push(current);
178
+ return out;
179
+ }
144
180
  /** Render a colored bottom border: └──────────┘ */
145
181
  function boxBottom(width, color = '#4e3d30') {
146
182
  const inner = '─'.repeat(Math.max(width - 2, 2));
@@ -1 +1 @@
1
- {"version":3,"file":"display.js","sourceRoot":"","sources":["../../src/cli/display.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"display.js","sourceRoot":"","sources":["../../src/cli/display.ts"],"names":[],"mappings":"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"}
package/dist/cli/index.js CHANGED
@@ -66,6 +66,8 @@ const diamond_js_1 = require("./diamond.js");
66
66
  const episode_capture_js_1 = require("../ruby/episode-capture.js");
67
67
  const model_selector_js_1 = require("../ruby/model-selector.js");
68
68
  const stats_js_1 = require("../ruby/stats.js");
69
+ const alternator_js_1 = require("../ruby/alternator.js");
70
+ const types_js_1 = require("../ruby/types.js");
69
71
  const load_env_js_1 = require("../util/load-env.js");
70
72
  const factory_js_2 = require("../providers/factory.js");
71
73
  // Load API keys from ~/.hermes/.env, ~/.config/aura-code/.env, and project .env
@@ -783,6 +785,9 @@ async function main() {
783
785
  if (!perception || (0, index_js_4.isStale)(perception)) {
784
786
  display.agentThinking();
785
787
  perception = await (0, index_js_4.extractPerception)(ctx.root);
788
+ // Persist so the viz dashboard and context summary stay populated
789
+ (0, index_js_4.savePerception)(perception).catch(() => { });
790
+ (0, index_js_4.saveGraphForViz)(perception).catch(() => { });
786
791
  }
787
792
  const decision = await (0, index_js_3.routeTask)({ provider, context: ctx, task, perception: perception ?? undefined });
788
793
  if (decision.shouldDecompose && decision.confidence > 0.8) {
@@ -795,7 +800,11 @@ async function main() {
795
800
  catch {
796
801
  // Router failed — fall through to single agent
797
802
  }
798
- // ── RubyAlternator: suggest model from competence history ─────────────────
803
+ // ── Competence-based model selection ───────────────────────────────────────
804
+ // Picks the best-performing model among already-configured, same-family
805
+ // options based on task similarity to past episodes. Distinct from
806
+ // RubyAlternator below — this only chooses among models you've already
807
+ // set up; it never tries a free local model first.
799
808
  // Only when the user has NOT explicitly specified --model or :model
800
809
  if (!userSetModel && !globalCfg?.defaultModel) {
801
810
  try {
@@ -818,9 +827,13 @@ async function main() {
818
827
  }
819
828
  }
820
829
  const doVerify = cliVerify || !!fileConfig.verify;
830
+ const rubyConfig = { ...types_js_1.DEFAULT_RUBY_CONFIG, ...fileConfig.ruby };
821
831
  const episodeStart = Date.now();
822
832
  let result;
833
+ let alternatorHandledEpisode = false;
823
834
  if (doVerify) {
835
+ // Ruby-alternation doesn't support the verification wrapper yet —
836
+ // a verified task always runs directly against the selected model.
824
837
  const { runWithVerification } = await Promise.resolve().then(() => __importStar(require('../verify/index.js')));
825
838
  const maxRetries = cliMaxVerifyRetries ?? fileConfig.maxVerifyRetries ?? defaults_js_1.DEFAULTS.maxVerifyRetries;
826
839
  const testCommand = cliTestCommand ?? fileConfig.testCommand;
@@ -841,6 +854,20 @@ async function main() {
841
854
  });
842
855
  result = wrapperResult.loopResult;
843
856
  }
857
+ else if (rubyConfig.enabled) {
858
+ const alternator = new alternator_js_1.RubyAlternator({
859
+ rubyConfig,
860
+ largeModelProvider: provider,
861
+ projectRoot: ctx.root,
862
+ context: ctx,
863
+ display,
864
+ permissions,
865
+ initialHistory: activeChatHistory,
866
+ });
867
+ const altResult = await alternator.run(task);
868
+ result = altResult.loopResult;
869
+ alternatorHandledEpisode = true; // alternator.run() already saved its own episode
870
+ }
844
871
  else {
845
872
  result = await (0, loop_js_1.runAgentLoop)({
846
873
  provider, task, context: ctx, permissions, display,
@@ -853,26 +880,30 @@ async function main() {
853
880
  sessionPath,
854
881
  });
855
882
  }
856
- // Persist episode for Ruby Principle training data
857
- try {
858
- const { randomBytes } = await Promise.resolve().then(() => __importStar(require('crypto')));
859
- await (0, episode_capture_js_1.saveEpisode)(ctx.root, {
860
- id: randomBytes(4).toString('hex') + '-' + Date.now().toString(36),
861
- timestamp: Date.now(),
862
- task,
863
- projectRoot: ctx.root,
864
- rubyAttempted: false,
865
- rubySucceeded: false,
866
- largeModelUsed: runtimeConfig.model,
867
- largeModelOutput: result.summary,
868
- reviewerApproved: result.success,
869
- tokensUsed: { largeModel: result.usage.totalTokens },
870
- durationMs: Date.now() - episodeStart,
871
- taskCategory: 'other',
872
- });
873
- }
874
- catch {
875
- // Episode recording is best-effort; never block the user
883
+ // Persist episode for Ruby Principle training data — skip when
884
+ // RubyAlternator already saved its own (richer) episode above, to
885
+ // avoid double-counting every task in the stats/dashboard.
886
+ if (!alternatorHandledEpisode) {
887
+ try {
888
+ const { randomBytes } = await Promise.resolve().then(() => __importStar(require('crypto')));
889
+ await (0, episode_capture_js_1.saveEpisode)(ctx.root, {
890
+ id: randomBytes(4).toString('hex') + '-' + Date.now().toString(36),
891
+ timestamp: Date.now(),
892
+ task,
893
+ projectRoot: ctx.root,
894
+ rubyAttempted: false,
895
+ rubySucceeded: false,
896
+ largeModelUsed: runtimeConfig.model,
897
+ largeModelOutput: result.summary,
898
+ reviewerApproved: result.success,
899
+ tokensUsed: { largeModel: result.usage.totalTokens },
900
+ durationMs: Date.now() - episodeStart,
901
+ taskCategory: 'other',
902
+ });
903
+ }
904
+ catch {
905
+ // Episode recording is best-effort; never block the user
906
+ }
876
907
  }
877
908
  // Update history so REPL continues the conversation
878
909
  activeChatHistory = result.history;
@@ -920,6 +951,7 @@ async function main() {
920
951
  permissions, cumulative,
921
952
  chatState: { projectRoot, activeChatId, activeChatHistory, activeChatTitle, noSession },
922
953
  rl,
954
+ rubyEnabled: { ...types_js_1.DEFAULT_RUBY_CONFIG, ...fileConfig.ruby }.enabled,
923
955
  };
924
956
  const cmdResult = await handleReplCommand(input, replCtx);
925
957
  if (cmdResult.handled) {
@@ -930,11 +962,19 @@ async function main() {
930
962
  activeChatHistory = cmdResult.newHistory;
931
963
  if (cmdResult.newTitle !== undefined)
932
964
  activeChatTitle = cmdResult.newTitle;
965
+ // :ruby on/off persists by mutating the loaded config the gate reads.
966
+ if (cmdResult.rubyEnabled !== undefined) {
967
+ fileConfig.ruby = { ...fileConfig.ruby, enabled: cmdResult.rubyEnabled };
968
+ }
933
969
  ask();
934
970
  return;
935
971
  }
936
972
  // Run task — pass current conversation history for stay-active mode
937
- // ── RubyAlternator: suggest model from competence history ──────────────
973
+ // ── Competence-based model selection ───────────────────────────────
974
+ // Picks the best-performing model among already-configured, same-family
975
+ // options based on task similarity to past episodes. Distinct from
976
+ // RubyAlternator below — this only chooses among models you've already
977
+ // set up; it never tries a free local model first.
938
978
  // Only when the user has NOT set a model explicitly via --model or :model
939
979
  if (!userSetModel && !globalCfg?.defaultModel) {
940
980
  try {
@@ -957,8 +997,16 @@ async function main() {
957
997
  let result;
958
998
  try {
959
999
  const currentProvider = buildProvider(display);
1000
+ const replConfirmFn = async (msg) => new Promise(res => {
1001
+ rl.question(`\n⚠️ ${msg} [y/N] `, a => {
1002
+ res(a.trim().toLowerCase() === 'y' || a.trim().toLowerCase() === 'yes');
1003
+ });
1004
+ });
960
1005
  const doVerify = argv.verify === true || !!fileConfig.verify;
1006
+ const rubyConfig = { ...types_js_1.DEFAULT_RUBY_CONFIG, ...fileConfig.ruby };
961
1007
  if (doVerify) {
1008
+ // Ruby-alternation doesn't support the verification wrapper yet —
1009
+ // a verified task always runs directly against the selected model.
962
1010
  const { runWithVerification } = await Promise.resolve().then(() => __importStar(require('../verify/index.js')));
963
1011
  const maxRetries = cliMaxVerifyRetries ?? fileConfig.maxVerifyRetries ?? defaults_js_1.DEFAULTS.maxVerifyRetries;
964
1012
  const testCommand = cliTestCommand ?? fileConfig.testCommand;
@@ -968,11 +1016,7 @@ async function main() {
968
1016
  context: ctx, permissions, display,
969
1017
  initialHistory: activeChatHistory,
970
1018
  maxTurns: resolved.maxTurns,
971
- confirmFn: async (msg) => new Promise(res => {
972
- rl.question(`\\n⚠️ ${msg} [y/N] `, a => {
973
- res(a.trim().toLowerCase() === 'y' || a.trim().toLowerCase() === 'yes');
974
- });
975
- }),
1019
+ confirmFn: replConfirmFn,
976
1020
  spawnConfig: {
977
1021
  apiKey: runtimeConfig.apiKey,
978
1022
  baseUrl: runtimeConfig.baseUrl ?? undefined,
@@ -985,17 +1029,27 @@ async function main() {
985
1029
  });
986
1030
  result = wrapperResult.loopResult;
987
1031
  }
1032
+ else if (rubyConfig.enabled) {
1033
+ const alternator = new alternator_js_1.RubyAlternator({
1034
+ rubyConfig,
1035
+ largeModelProvider: currentProvider,
1036
+ projectRoot: ctx.root,
1037
+ context: ctx,
1038
+ display,
1039
+ permissions,
1040
+ confirmFn: replConfirmFn,
1041
+ initialHistory: activeChatHistory,
1042
+ });
1043
+ const altResult = await alternator.run(input);
1044
+ result = altResult.loopResult;
1045
+ }
988
1046
  else {
989
1047
  result = await (0, loop_js_1.runAgentLoop)({
990
1048
  provider: currentProvider, task: input,
991
1049
  context: ctx, permissions, display,
992
1050
  initialHistory: activeChatHistory,
993
1051
  maxTurns: resolved.maxTurns,
994
- confirmFn: async (msg) => new Promise(res => {
995
- rl.question(`\\n⚠️ ${msg} [y/N] `, a => {
996
- res(a.trim().toLowerCase() === 'y' || a.trim().toLowerCase() === 'yes');
997
- });
998
- }),
1052
+ confirmFn: replConfirmFn,
999
1053
  spawnConfig: {
1000
1054
  apiKey: runtimeConfig.apiKey,
1001
1055
  baseUrl: runtimeConfig.baseUrl ?? undefined,
@@ -1165,13 +1219,23 @@ async function handleReplCommand(input, c) {
1165
1219
  ' ── Context / Stats ──────────────────────────────',
1166
1220
  ' :context Show loaded project context',
1167
1221
  ' :graph Show codebase knowledge graph summary',
1168
- ' :graph refresh Reload graph from graphify-out/graph.json',
1222
+ ' :graph refresh Extract + persist codebase graph',
1169
1223
  ' :plans List saved execution plans',
1170
1224
  ' :viz, :dashboard Generate and open the memory dashboard',
1225
+ ' :dream [experimental] Consolidate today\'s episodes into a dated dream (dreams/*.md)',
1226
+ ' :dream full [experimental] Consolidate ALL episodes, ignoring the last-dream cutoff',
1227
+ ' :rem [experimental] List dream files and open the most recent one',
1228
+ ' :research <topic> Multi-step research pass, saved to research/*.md (inspired by DeerFlow)',
1229
+ ' :council <topic> Ecclesia — 5 independent agents research the topic, synthesized into one verdict (council/*.md)',
1230
+ ' :ruby [on|off] Toggle the Ruby Principle (default: off)',
1231
+ ' :design [slug|list|off] Set/list the design system auto-applied to UI builds',
1171
1232
  ' /stats, /usage Show token + cost usage this session',
1172
1233
  ' /clear, /reset Reset cumulative usage stats',
1173
1234
  '',
1174
1235
  ' ── General ──────────────────────────────────────',
1236
+ ' :approve all Auto-approve all tool calls (no confirmations)',
1237
+ ' :approve normal Require confirmation for destructive ops',
1238
+ ' :approve read-only Block all write operations',
1175
1239
  ' :quit, :q, /exit Exit',
1176
1240
  '',
1177
1241
  ].join('\n')));
@@ -1301,6 +1365,142 @@ async function handleReplCommand(input, c) {
1301
1365
  }
1302
1366
  return { handled: true };
1303
1367
  }
1368
+ if (input === ':dream' || input === ':dream full') {
1369
+ const full = input === ':dream full';
1370
+ console.log(chalk_1.default.hex('#8a7768')('\n Dreaming — consolidating episodes…\n'));
1371
+ try {
1372
+ const { runDream } = await Promise.resolve().then(() => __importStar(require('../dream/dream.js')));
1373
+ const { createResilientProvider } = await Promise.resolve().then(() => __importStar(require('../providers/resilient-factory.js')));
1374
+ const provider = createResilientProvider({ model: c.providerConfig.model, apiKey: c.providerConfig.apiKey, baseUrl: c.providerConfig.baseUrl }, {}, c.display);
1375
+ const res = await runDream({ projectRoot: c.ctx.root, provider, full });
1376
+ if (res.skipped) {
1377
+ console.log(chalk_1.default.hex('#cc9e5c')(` ⤳ Nothing to dream about — ${res.reason}.\n`));
1378
+ }
1379
+ else {
1380
+ console.log(chalk_1.default.hex('#5a9e6e')(` ✓ Dream written: ${res.path}`));
1381
+ console.log(chalk_1.default.hex('#8a7768')(` Consolidated ${res.episodeCount} episode(s).\n`));
1382
+ }
1383
+ }
1384
+ catch (e) {
1385
+ console.log(chalk_1.default.hex('#b15439')(` ✗ ${String(e)}\n`));
1386
+ }
1387
+ return { handled: true };
1388
+ }
1389
+ if (input.startsWith(':research ')) {
1390
+ const topic = input.slice(':research '.length).trim();
1391
+ if (!topic) {
1392
+ console.log(chalk_1.default.hex('#b15439')('\n Usage: :research <topic>\n'));
1393
+ return { handled: true };
1394
+ }
1395
+ console.log(chalk_1.default.hex('#8a7768')(`\n Researching "${topic}"…\n`));
1396
+ try {
1397
+ const { runResearch } = await Promise.resolve().then(() => __importStar(require('../research/research.js')));
1398
+ const { createResilientProvider } = await Promise.resolve().then(() => __importStar(require('../providers/resilient-factory.js')));
1399
+ const provider = createResilientProvider({ model: c.providerConfig.model, apiKey: c.providerConfig.apiKey, baseUrl: c.providerConfig.baseUrl }, {}, c.display);
1400
+ const res = await runResearch({
1401
+ projectRoot: c.ctx.root,
1402
+ topic,
1403
+ provider,
1404
+ context: c.ctx,
1405
+ permissions: c.permissions,
1406
+ display: c.display,
1407
+ });
1408
+ console.log(chalk_1.default.hex('#5a9e6e')(` ✓ Research written: ${res.path}`));
1409
+ console.log(chalk_1.default.hex('#8a7768')(` ${res.turns} turn(s) · ${res.toolCalls} tool call(s).\n`));
1410
+ }
1411
+ catch (e) {
1412
+ console.log(chalk_1.default.hex('#b15439')(` ✗ ${String(e)}\n`));
1413
+ }
1414
+ return { handled: true };
1415
+ }
1416
+ if (input.startsWith(':council ')) {
1417
+ const topic = input.slice(':council '.length).trim();
1418
+ if (!topic) {
1419
+ console.log(chalk_1.default.hex('#b15439')('\n Usage: :council <topic>\n'));
1420
+ return { handled: true };
1421
+ }
1422
+ console.log(chalk_1.default.hex('#8a7768')(`\n Convening Ecclesia on "${topic}" — 5 independent agents…\n`));
1423
+ try {
1424
+ const { runCouncil } = await Promise.resolve().then(() => __importStar(require('../research/council.js')));
1425
+ const { createResilientProvider } = await Promise.resolve().then(() => __importStar(require('../providers/resilient-factory.js')));
1426
+ const synthesisProvider = createResilientProvider({ model: c.providerConfig.model, apiKey: c.providerConfig.apiKey, baseUrl: c.providerConfig.baseUrl }, {}, c.display);
1427
+ const res = await runCouncil({
1428
+ projectRoot: c.ctx.root,
1429
+ topic,
1430
+ synthesisProvider,
1431
+ context: c.ctx,
1432
+ permissions: c.permissions,
1433
+ display: c.display,
1434
+ });
1435
+ console.log(chalk_1.default.hex('#5a9e6e')(` ✓ Ecclesia verdict: ${res.path}`));
1436
+ console.log(chalk_1.default.hex('#8a7768')(` ${res.panelSize} agents` + (res.agentFailures > 0 ? `, ${res.agentFailures} failed` : '') + `.\n`));
1437
+ }
1438
+ catch (e) {
1439
+ console.log(chalk_1.default.hex('#b15439')(` ✗ ${String(e)}\n`));
1440
+ }
1441
+ return { handled: true };
1442
+ }
1443
+ if (input === ':rem') {
1444
+ const dir = path.join(c.ctx.root, 'dreams');
1445
+ let files = [];
1446
+ try {
1447
+ files = fs.readdirSync(dir).filter(f => f.endsWith('.md')).sort().reverse();
1448
+ }
1449
+ catch { /* no dreams dir */ }
1450
+ if (files.length === 0) {
1451
+ console.log(chalk_1.default.hex('#8a7768')('\n No dreams yet. Run :dream after some work.\n'));
1452
+ }
1453
+ else {
1454
+ console.log(chalk_1.default.hex('#cc785c').bold('\n Dreams\n'));
1455
+ for (const f of files.slice(0, 20))
1456
+ console.log(chalk_1.default.hex('#ede0cc')(` ${f}`));
1457
+ const latest = path.join(dir, files[0]);
1458
+ console.log(chalk_1.default.hex('#8a7768')(`\n Most recent: ${latest}\n`));
1459
+ console.log(chalk_1.default.hex('#4e3d30')(fs.readFileSync(latest, 'utf8')));
1460
+ }
1461
+ return { handled: true };
1462
+ }
1463
+ if (input === ':ruby' || input === ':ruby on' || input === ':ruby off') {
1464
+ if (input === ':ruby') {
1465
+ const state = c.rubyEnabled ? chalk_1.default.hex('#5a9e6e')('ON') : chalk_1.default.hex('#b15439')('OFF');
1466
+ console.log(chalk_1.default.hex('#8a7768')(`\n Ruby Principle is ${state}. Use :ruby on / :ruby off to change.\n`));
1467
+ return { handled: true };
1468
+ }
1469
+ const on = input === ':ruby on';
1470
+ c.rubyEnabled = on;
1471
+ const state = on ? chalk_1.default.hex('#5a9e6e')('ON') : chalk_1.default.hex('#b15439')('OFF');
1472
+ console.log(chalk_1.default.hex('#8a7768')(`\n Ruby Principle is now ${state} for this session.\n`));
1473
+ return { handled: true, rubyEnabled: on };
1474
+ }
1475
+ if (input === ':design' || input.startsWith(':design ')) {
1476
+ const { listDesignSlugs } = await Promise.resolve().then(() => __importStar(require('../agent/design.js')));
1477
+ const slugs = listDesignSlugs(c.ctx.root);
1478
+ const arg = input.slice(':design'.length).trim();
1479
+ if (slugs.length === 0) {
1480
+ console.log(chalk_1.default.hex('#b15439')('\n No design-systems/ folder found in this project.\n'));
1481
+ return { handled: true };
1482
+ }
1483
+ if (arg === '' || arg === 'list') {
1484
+ const current = process.env.AURA_DESIGN || 'terracotta';
1485
+ console.log(chalk_1.default.hex('#cc785c').bold(`\n Design systems (${slugs.length}) — default: ${current}\n`));
1486
+ console.log(chalk_1.default.hex('#ede0cc')(' ' + slugs.join(' ')));
1487
+ console.log(chalk_1.default.hex('#8a7768')('\n :design <slug> sets the default · auto-applies on website/UI tasks.\n'));
1488
+ return { handled: true };
1489
+ }
1490
+ if (arg === 'off') {
1491
+ process.env.AURA_DESIGN = '__none__';
1492
+ console.log(chalk_1.default.hex('#8a7768')('\n Design auto-injection disabled for this session.\n'));
1493
+ return { handled: true };
1494
+ }
1495
+ if (slugs.includes(arg)) {
1496
+ process.env.AURA_DESIGN = arg;
1497
+ console.log(chalk_1.default.hex('#5a9e6e')(`\n Default design set to "${arg}" for this session.\n`));
1498
+ }
1499
+ else {
1500
+ console.log(chalk_1.default.hex('#b15439')(`\n Unknown design "${arg}". Run :design to list available slugs.\n`));
1501
+ }
1502
+ return { handled: true };
1503
+ }
1304
1504
  if (input === ':plans') {
1305
1505
  const { planStore } = await Promise.resolve().then(() => __importStar(require('../orchestration/plan-store.js')));
1306
1506
  const plans = await planStore.list();
@@ -1323,24 +1523,25 @@ async function handleReplCommand(input, c) {
1323
1523
  return { handled: true };
1324
1524
  }
1325
1525
  if (input === ':graph refresh') {
1326
- console.log(chalk_1.default.hex('#8a7768')('\n Refreshing codebase graph...\n'));
1327
- const { execFileSync } = await Promise.resolve().then(() => __importStar(require('child_process')));
1526
+ console.log(chalk_1.default.hex('#8a7768')('\n Extracting codebase graph...\n'));
1328
1527
  try {
1329
- // Pass root as sys.argv[1] to avoid shell interpolation
1330
- execFileSync('python3', [
1331
- '-c',
1332
- 'import sys,json,os,re,glob; root=sys.argv[1]+"/src"; print("Scanning", root)',
1333
- c.ctx.root,
1334
- ], { stdio: 'inherit' });
1335
- }
1336
- catch { /* ignore */ }
1528
+ const perception = await (0, index_js_4.extractPerception)(c.ctx.root);
1529
+ await (0, index_js_4.savePerception)(perception);
1530
+ await (0, index_js_4.saveGraphForViz)(perception);
1531
+ const nodeCount = perception.nodes.length;
1532
+ const edgeCount = perception.edges.length;
1533
+ console.log(chalk_1.default.hex('#5a9e6e')(` ✓ Extracted ${nodeCount} nodes, ${edgeCount} edges.\n`));
1534
+ }
1535
+ catch (err) {
1536
+ console.log(chalk_1.default.hex('#f85149')(` ✗ Extraction failed: ${err instanceof Error ? err.message : String(err)}\n`));
1537
+ }
1337
1538
  // Reload context graph
1338
1539
  c.ctx.graphSummary = (0, context_js_1.loadGraphSummary)(c.ctx.root);
1339
1540
  if (c.ctx.graphSummary) {
1340
1541
  console.log(chalk_1.default.hex('#5a9e6e')(' ✓ Graph loaded and injected into context.\n'));
1341
1542
  }
1342
1543
  else {
1343
- console.log(chalk_1.default.hex('#8a7768')(' No graph.json found after refresh. Run graphify extract first.\n'));
1544
+ console.log(chalk_1.default.hex('#8a7768')(' No graph.json found after refresh.\n'));
1344
1545
  }
1345
1546
  return { handled: true };
1346
1547
  }
@@ -1406,6 +1607,18 @@ async function handleReplCommand(input, c) {
1406
1607
  console.log(chalk_1.default.hex('#5a9e6e')(' ✓ Session stats reset'));
1407
1608
  return { handled: true };
1408
1609
  }
1610
+ // ── Permission commands ──────────────────────────────────────────────────
1611
+ if (input.startsWith(':approve ')) {
1612
+ const raw = input.slice(':approve '.length).trim();
1613
+ const mapped = raw === 'all' ? 'auto' : raw;
1614
+ if (mapped !== 'auto' && mapped !== 'normal' && mapped !== 'read-only') {
1615
+ console.log(chalk_1.default.hex('#b15439')(' ✗ Usage: :approve all | :approve normal | :approve read-only'));
1616
+ return { handled: true };
1617
+ }
1618
+ c.permissions.setLevel(mapped);
1619
+ console.log(chalk_1.default.hex('#5a9e6e')(` ✓ Permission level set to ${mapped}`));
1620
+ return { handled: true };
1621
+ }
1409
1622
  if (input === '/stats' || input === '/usage') {
1410
1623
  const u = c.cumulative;
1411
1624
  const total = u.inputTokens + u.outputTokens;
@@ -1790,6 +2003,7 @@ ${chalk_1.default.hex('#cc785c').bold(' aura')} ${chalk_1.default.hex('#8a7768'
1790
2003
  --test-command <cmd> Shell command run as part of verification (e.g. "npm test")
1791
2004
  --max-turns <n> Max agent loop turns before stopping (default: 150)
1792
2005
  --analyze Mine session history for weakness patterns; save report
2006
+ --stats Show episode stats — completion rate, avg duration, top model, tokens
1793
2007
  --propose-harness Generate system-prompt patches from weakness report
1794
2008
  --apply-harness <id> Apply a proposal patch; reverts if tests fail
1795
2009
  --workflow <name> ... Create and run a sequential workflow with named steps