aura-code 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +137 -0
- package/dist/agent/context.d.ts +13 -0
- package/dist/agent/context.js +183 -0
- package/dist/agent/context.js.map +1 -0
- package/dist/agent/loop.d.ts +60 -0
- package/dist/agent/loop.js +228 -0
- package/dist/agent/loop.js.map +1 -0
- package/dist/agent/session-store.d.ts +30 -0
- package/dist/agent/session-store.js +178 -0
- package/dist/agent/session-store.js.map +1 -0
- package/dist/agent/spawner.d.ts +57 -0
- package/dist/agent/spawner.js +112 -0
- package/dist/agent/spawner.js.map +1 -0
- package/dist/agent/system-prompt.d.ts +3 -0
- package/dist/agent/system-prompt.js +100 -0
- package/dist/agent/system-prompt.js.map +1 -0
- package/dist/architect/engine.d.ts +47 -0
- package/dist/architect/engine.js +217 -0
- package/dist/architect/engine.js.map +1 -0
- package/dist/architect/types.d.ts +61 -0
- package/dist/architect/types.js +6 -0
- package/dist/architect/types.js.map +1 -0
- package/dist/cli/diamond.d.ts +1 -0
- package/dist/cli/diamond.js +23 -0
- package/dist/cli/diamond.js.map +1 -0
- package/dist/cli/display.d.ts +44 -0
- package/dist/cli/display.js +234 -0
- package/dist/cli/display.js.map +1 -0
- package/dist/cli/index.d.ts +2 -0
- package/dist/cli/index.js +1734 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/config/defaults.d.ts +46 -0
- package/dist/config/defaults.js +106 -0
- package/dist/config/defaults.js.map +1 -0
- package/dist/config/project-config.d.ts +90 -0
- package/dist/config/project-config.js +141 -0
- package/dist/config/project-config.js.map +1 -0
- package/dist/harness/proposer.d.ts +26 -0
- package/dist/harness/proposer.js +204 -0
- package/dist/harness/proposer.js.map +1 -0
- package/dist/harness/weakness-miner.d.ts +28 -0
- package/dist/harness/weakness-miner.js +359 -0
- package/dist/harness/weakness-miner.js.map +1 -0
- package/dist/integrations/harnesses.d.ts +23 -0
- package/dist/integrations/harnesses.js +161 -0
- package/dist/integrations/harnesses.js.map +1 -0
- package/dist/orchestration/competence.d.ts +53 -0
- package/dist/orchestration/competence.js +181 -0
- package/dist/orchestration/competence.js.map +1 -0
- package/dist/orchestration/executor.d.ts +42 -0
- package/dist/orchestration/executor.js +206 -0
- package/dist/orchestration/executor.js.map +1 -0
- package/dist/orchestration/index.d.ts +20 -0
- package/dist/orchestration/index.js +39 -0
- package/dist/orchestration/index.js.map +1 -0
- package/dist/orchestration/orchestrator-prompts.d.ts +11 -0
- package/dist/orchestration/orchestrator-prompts.js +153 -0
- package/dist/orchestration/orchestrator-prompts.js.map +1 -0
- package/dist/orchestration/orchestrator.d.ts +27 -0
- package/dist/orchestration/orchestrator.js +169 -0
- package/dist/orchestration/orchestrator.js.map +1 -0
- package/dist/orchestration/plan-store.d.ts +53 -0
- package/dist/orchestration/plan-store.js +176 -0
- package/dist/orchestration/plan-store.js.map +1 -0
- package/dist/orchestration/router-prompts.d.ts +6 -0
- package/dist/orchestration/router-prompts.js +55 -0
- package/dist/orchestration/router-prompts.js.map +1 -0
- package/dist/orchestration/router.d.ts +23 -0
- package/dist/orchestration/router.js +70 -0
- package/dist/orchestration/router.js.map +1 -0
- package/dist/orchestration/ruby-detect.d.ts +6 -0
- package/dist/orchestration/ruby-detect.js +130 -0
- package/dist/orchestration/ruby-detect.js.map +1 -0
- package/dist/orchestration/ruby-types.d.ts +44 -0
- package/dist/orchestration/ruby-types.js +6 -0
- package/dist/orchestration/ruby-types.js.map +1 -0
- package/dist/orchestration/specialist-prompts.d.ts +19 -0
- package/dist/orchestration/specialist-prompts.js +143 -0
- package/dist/orchestration/specialist-prompts.js.map +1 -0
- package/dist/orchestration/specialists.d.ts +66 -0
- package/dist/orchestration/specialists.js +175 -0
- package/dist/orchestration/specialists.js.map +1 -0
- package/dist/orchestration/types.d.ts +82 -0
- package/dist/orchestration/types.js +6 -0
- package/dist/orchestration/types.js.map +1 -0
- package/dist/perception/extractor.d.ts +7 -0
- package/dist/perception/extractor.js +521 -0
- package/dist/perception/extractor.js.map +1 -0
- package/dist/perception/graph-store.d.ts +25 -0
- package/dist/perception/graph-store.js +117 -0
- package/dist/perception/graph-store.js.map +1 -0
- package/dist/perception/index.d.ts +4 -0
- package/dist/perception/index.js +18 -0
- package/dist/perception/index.js.map +1 -0
- package/dist/perception/queries.d.ts +29 -0
- package/dist/perception/queries.js +354 -0
- package/dist/perception/queries.js.map +1 -0
- package/dist/perception/types.d.ts +103 -0
- package/dist/perception/types.js +6 -0
- package/dist/perception/types.js.map +1 -0
- package/dist/providers/anthropic.d.ts +11 -0
- package/dist/providers/anthropic.js +172 -0
- package/dist/providers/anthropic.js.map +1 -0
- package/dist/providers/factory.d.ts +58 -0
- package/dist/providers/factory.js +354 -0
- package/dist/providers/factory.js.map +1 -0
- package/dist/providers/fallback.d.ts +24 -0
- package/dist/providers/fallback.js +72 -0
- package/dist/providers/fallback.js.map +1 -0
- package/dist/providers/google.d.ts +11 -0
- package/dist/providers/google.js +129 -0
- package/dist/providers/google.js.map +1 -0
- package/dist/providers/openai-compatible.d.ts +24 -0
- package/dist/providers/openai-compatible.js +216 -0
- package/dist/providers/openai-compatible.js.map +1 -0
- package/dist/providers/resilient-factory.d.ts +24 -0
- package/dist/providers/resilient-factory.js +57 -0
- package/dist/providers/resilient-factory.js.map +1 -0
- package/dist/providers/resilient.d.ts +63 -0
- package/dist/providers/resilient.js +145 -0
- package/dist/providers/resilient.js.map +1 -0
- package/dist/providers/types.d.ts +84 -0
- package/dist/providers/types.js +6 -0
- package/dist/providers/types.js.map +1 -0
- package/dist/ruby/alternator.d.ts +40 -0
- package/dist/ruby/alternator.js +233 -0
- package/dist/ruby/alternator.js.map +1 -0
- package/dist/ruby/competence.d.ts +34 -0
- package/dist/ruby/competence.js +264 -0
- package/dist/ruby/competence.js.map +1 -0
- package/dist/ruby/episode-capture.d.ts +56 -0
- package/dist/ruby/episode-capture.js +193 -0
- package/dist/ruby/episode-capture.js.map +1 -0
- package/dist/ruby/fine-tune.d.ts +16 -0
- package/dist/ruby/fine-tune.js +253 -0
- package/dist/ruby/fine-tune.js.map +1 -0
- package/dist/ruby/index.d.ts +10 -0
- package/dist/ruby/index.js +26 -0
- package/dist/ruby/index.js.map +1 -0
- package/dist/ruby/ruby-model.d.ts +36 -0
- package/dist/ruby/ruby-model.js +81 -0
- package/dist/ruby/ruby-model.js.map +1 -0
- package/dist/ruby/training-data.d.ts +11 -0
- package/dist/ruby/training-data.js +107 -0
- package/dist/ruby/training-data.js.map +1 -0
- package/dist/ruby/types.d.ts +136 -0
- package/dist/ruby/types.js +20 -0
- package/dist/ruby/types.js.map +1 -0
- package/dist/safety/permissions.d.ts +32 -0
- package/dist/safety/permissions.js +304 -0
- package/dist/safety/permissions.js.map +1 -0
- package/dist/server/index.d.ts +9 -0
- package/dist/server/index.js +342 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/session.d.ts +22 -0
- package/dist/server/session.js +16 -0
- package/dist/server/session.js.map +1 -0
- package/dist/setup/first-run.d.ts +41 -0
- package/dist/setup/first-run.js +386 -0
- package/dist/setup/first-run.js.map +1 -0
- package/dist/setup/global-config.d.ts +19 -0
- package/dist/setup/global-config.js +97 -0
- package/dist/setup/global-config.js.map +1 -0
- package/dist/tools/audio-transcribe.d.ts +8 -0
- package/dist/tools/audio-transcribe.js +156 -0
- package/dist/tools/audio-transcribe.js.map +1 -0
- package/dist/tools/browser.d.ts +15 -0
- package/dist/tools/browser.js +241 -0
- package/dist/tools/browser.js.map +1 -0
- package/dist/tools/calendar.d.ts +12 -0
- package/dist/tools/calendar.js +196 -0
- package/dist/tools/calendar.js.map +1 -0
- package/dist/tools/clipboard.d.ts +7 -0
- package/dist/tools/clipboard.js +90 -0
- package/dist/tools/clipboard.js.map +1 -0
- package/dist/tools/cron.d.ts +10 -0
- package/dist/tools/cron.js +167 -0
- package/dist/tools/cron.js.map +1 -0
- package/dist/tools/edit-file.d.ts +6 -0
- package/dist/tools/edit-file.js +98 -0
- package/dist/tools/edit-file.js.map +1 -0
- package/dist/tools/email.d.ts +11 -0
- package/dist/tools/email.js +153 -0
- package/dist/tools/email.js.map +1 -0
- package/dist/tools/git.d.ts +1 -0
- package/dist/tools/git.js +7 -0
- package/dist/tools/git.js.map +1 -0
- package/dist/tools/http-request.d.ts +12 -0
- package/dist/tools/http-request.js +91 -0
- package/dist/tools/http-request.js.map +1 -0
- package/dist/tools/image-read.d.ts +7 -0
- package/dist/tools/image-read.js +125 -0
- package/dist/tools/image-read.js.map +1 -0
- package/dist/tools/index.d.ts +3 -0
- package/dist/tools/index.js +201 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/list-dir.d.ts +1 -0
- package/dist/tools/list-dir.js +6 -0
- package/dist/tools/list-dir.js.map +1 -0
- package/dist/tools/mcp.d.ts +11 -0
- package/dist/tools/mcp.js +356 -0
- package/dist/tools/mcp.js.map +1 -0
- package/dist/tools/memory.d.ts +9 -0
- package/dist/tools/memory.js +124 -0
- package/dist/tools/memory.js.map +1 -0
- package/dist/tools/notify.d.ts +9 -0
- package/dist/tools/notify.js +40 -0
- package/dist/tools/notify.js.map +1 -0
- package/dist/tools/read-file.d.ts +6 -0
- package/dist/tools/read-file.js +76 -0
- package/dist/tools/read-file.js.map +1 -0
- package/dist/tools/run-shell.d.ts +1 -0
- package/dist/tools/run-shell.js +6 -0
- package/dist/tools/run-shell.js.map +1 -0
- package/dist/tools/run-tests.d.ts +1 -0
- package/dist/tools/run-tests.js +6 -0
- package/dist/tools/run-tests.js.map +1 -0
- package/dist/tools/search-code.d.ts +1 -0
- package/dist/tools/search-code.js +6 -0
- package/dist/tools/search-code.js.map +1 -0
- package/dist/tools/telegram-bot.d.ts +2 -0
- package/dist/tools/telegram-bot.js +693 -0
- package/dist/tools/telegram-bot.js.map +1 -0
- package/dist/tools/telegram-safety.d.ts +52 -0
- package/dist/tools/telegram-safety.js +189 -0
- package/dist/tools/telegram-safety.js.map +1 -0
- package/dist/tools/telegram.d.ts +16 -0
- package/dist/tools/telegram.js +227 -0
- package/dist/tools/telegram.js.map +1 -0
- package/dist/tools/tools.d.ts +48 -0
- package/dist/tools/tools.js +328 -0
- package/dist/tools/tools.js.map +1 -0
- package/dist/tools/web-fetch.d.ts +11 -0
- package/dist/tools/web-fetch.js +119 -0
- package/dist/tools/web-fetch.js.map +1 -0
- package/dist/tools/web-search.d.ts +8 -0
- package/dist/tools/web-search.js +81 -0
- package/dist/tools/web-search.js.map +1 -0
- package/dist/tools/whatsapp.d.ts +10 -0
- package/dist/tools/whatsapp.js +222 -0
- package/dist/tools/whatsapp.js.map +1 -0
- package/dist/tools/write-file.d.ts +1 -0
- package/dist/tools/write-file.js +6 -0
- package/dist/tools/write-file.js.map +1 -0
- package/dist/tools/youtube-transcript.d.ts +9 -0
- package/dist/tools/youtube-transcript.js +200 -0
- package/dist/tools/youtube-transcript.js.map +1 -0
- package/dist/util/circuit-breaker.d.ts +44 -0
- package/dist/util/circuit-breaker.js +78 -0
- package/dist/util/circuit-breaker.js.map +1 -0
- package/dist/util/env.d.ts +18 -0
- package/dist/util/env.js +39 -0
- package/dist/util/env.js.map +1 -0
- package/dist/util/errors.d.ts +42 -0
- package/dist/util/errors.js +121 -0
- package/dist/util/errors.js.map +1 -0
- package/dist/util/rate-limiter.d.ts +71 -0
- package/dist/util/rate-limiter.js +141 -0
- package/dist/util/rate-limiter.js.map +1 -0
- package/dist/util/retry.d.ts +30 -0
- package/dist/util/retry.js +57 -0
- package/dist/util/retry.js.map +1 -0
- package/dist/util/sanitize.d.ts +16 -0
- package/dist/util/sanitize.js +255 -0
- package/dist/util/sanitize.js.map +1 -0
- package/dist/verify/checks.d.ts +21 -0
- package/dist/verify/checks.js +311 -0
- package/dist/verify/checks.js.map +1 -0
- package/dist/verify/index.d.ts +33 -0
- package/dist/verify/index.js +127 -0
- package/dist/verify/index.js.map +1 -0
- package/dist/verify/types.d.ts +20 -0
- package/dist/verify/types.js +3 -0
- package/dist/verify/types.js.map +1 -0
- package/dist/versioncheck.d.ts +22 -0
- package/dist/versioncheck.js +203 -0
- package/dist/versioncheck.js.map +1 -0
- package/dist/viz/index.d.ts +2 -0
- package/dist/viz/index.js +733 -0
- package/dist/viz/index.js.map +1 -0
- package/dist/workflows/engine.d.ts +46 -0
- package/dist/workflows/engine.js +320 -0
- package/dist/workflows/engine.js.map +1 -0
- package/dist/workflows/types.d.ts +92 -0
- package/dist/workflows/types.js +6 -0
- package/dist/workflows/types.js.map +1 -0
- package/package.json +86 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loop.js","sourceRoot":"","sources":["../../src/agent/loop.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8EA,oCA0BC;AAwJD,oDAOC;AAvQD,2CAA6B;AAE7B,gDAAkE;AAElE,6DAAmD;AACnD,yDAAuD;AAGvD,uDAAiD;AACjD,yDAAkD;AAClD,6CAAiF;AAiDjF,MAAM,oBAAoB,GAAgD;IACxE,0BAA0B,EAAI,EAAE,EAAE,EAAE,EAAE,EAAG,GAAG,EAAE,EAAE,EAAG;IACnD,4BAA4B,EAAE,EAAE,EAAE,EAAE,CAAC,EAAI,GAAG,EAAE,EAAE,EAAG;IACnD,2BAA2B,EAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAI;IACnD,QAAQ,EAAsB,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAG;IACnD,aAAa,EAAiB,EAAE,EAAE,EAAE,IAAI,EAAC,GAAG,EAAE,GAAG,EAAE;IACnD,gBAAgB,EAAc,EAAE,EAAE,EAAE,IAAI,EAAC,GAAG,EAAE,EAAE,EAAG;IACnD,kBAAkB,EAAY,EAAE,EAAE,EAAE,KAAK,EAAC,GAAG,EAAE,GAAG,EAAC;IACnD,WAAW,EAAmB,EAAE,EAAE,EAAE,CAAC,EAAI,GAAG,EAAE,EAAE,EAAG;IACnD,eAAe,EAAe,EAAE,EAAE,EAAE,CAAC,EAAI,GAAG,EAAE,CAAC,EAAI;IACnD,WAAW,EAAmB,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAI;IACnD,eAAe,EAAe,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;CACpD,CAAC;AAEF,SAAS,OAAO,CAAC,KAAa,EAAE,KAAa,EAAE,MAAc;IAC3D,MAAM,CAAC,GAAG,oBAAoB,CAAC,KAAK,CAAC,IAAI,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;IACxN,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;AACnE,CAAC;AAEM,KAAK,UAAU,YAAY,CAAC,IAAiB;IAClD,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAC/D,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,sBAAQ,CAAC,QAAQ,CAAC;IACpD,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,QAAQ,CAAC,KAAK,CAAC;IAEzD,MAAM,MAAM,GAAG,IAAA,oCAAiB,EAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;IACzD,MAAM,OAAO,GAAqB;QAChC,GAAG,CAAC,IAAI,CAAC,cAAc,IAAI,EAAE,CAAC;QAC9B,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE;KAChC,CAAC;IAEF,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,MAAM,KAAK,GAAe,EAAE,WAAW,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC;IAE9E,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;QACvB,IAAA,4BAAe,EAAC,IAAA,+BAAkB,EAAC,OAAO,EAAE,IAAI,CAAC,WAAW,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;IAChF,CAAC;IAED,OAAO,CAAC,aAAa,EAAE,CAAC;IAExB,IAAI,CAAC;QACH,OAAO,MAAM,WAAW,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;IAC3I,CAAC;YAAS,CAAC;QACT,IAAA,yBAAY,GAAE,CAAC;IACjB,CAAC;AACH,CAAC;AAgBD,KAAK,UAAU,WAAW,CAAC,IAAc;IACvC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;IAC/F,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IAC3C,MAAM,WAAW,GAA4D,EAAE,CAAC;IAEhF,OAAO,KAAK,GAAG,QAAQ,EAAE,CAAC;QACxB,KAAK,EAAE,CAAC;QAER,IAAI,YAAY,GAAG,EAAE,CAAC;QACtB,MAAM,iBAAiB,GAAe,EAAE,CAAC;QACzC,IAAI,aAAa,GAAsD,IAAI,CAAC;QAE5E,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,2BAAgB,CAAC,CAAC;YAClE,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBACjC,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;oBACnB,KAAK,MAAM;wBACT,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBAC/B,YAAY,IAAI,KAAK,CAAC,IAAI,CAAC;wBAC3B,MAAM;oBACR,KAAK,YAAY;wBACf,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;wBACxC,MAAM;oBACR,KAAK,YAAY;wBACf,MAAM;oBACR,KAAK,UAAU;wBACb,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBACnC,MAAM;oBACR,KAAK,MAAM;wBACT,aAAa,GAAG,EAAE,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;wBAC1D,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;4BAC1E,iBAAiB,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;wBACtD,CAAC;wBACD,MAAM,CAAC,GAAI,KAAK,CAAC,QAAwE,CAAC,KAAK,CAAC;wBAChG,IAAI,CAAC,EAAE,CAAC;4BACN,MAAM,GAAG,GAAG,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC;4BAC/B,MAAM,IAAI,GAAG,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC;4BACjC,KAAK,CAAC,WAAW,IAAI,GAAG,CAAC;4BACzB,KAAK,CAAC,YAAY,IAAI,IAAI,CAAC;4BAC3B,KAAK,CAAC,WAAW,IAAI,GAAG,GAAG,IAAI,CAAC;wBAClC,CAAC;wBACD,MAAM;gBACV,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,mBAAmB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC9C,MAAM,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YACzC,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,0BAA0B,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE;gBACxD,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW;gBACjD,OAAO,EAAE,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,YAAY,CAAC;aACtE,CAAC;QACJ,CAAC;QAED,IAAI,YAAY;YAAE,OAAO,CAAC,SAAS,EAAE,CAAC;QAEtC,MAAM,UAAU,GAAG,CAAC,YAAY,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,CAAC;QACnE,IAAI,UAAU,IAAI,aAAa,EAAE,UAAU,KAAK,MAAM,EAAE,CAAC;YACvD,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC;YAC3D,MAAM,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YACzC,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,YAAY,IAAI,iCAAiC;gBAC1D,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW;gBACjD,OAAO,EAAE,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,YAAY,CAAC;aACtE,CAAC;QACJ,CAAC;QAED,IAAI,aAAa,EAAE,UAAU,KAAK,OAAO,EAAE,CAAC;YAC1C,OAAO,CAAC,OAAO,CAAC,iCAAiC,CAAC,CAAC;YACnD,MAAM;QACR,CAAC;QAED,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,YAAY;YACrB,SAAS,EAAE,iBAAiB;SAC7B,CAAC,CAAC;QAEH,MAAM,WAAW,GAAiB,EAAE,CAAC;QAErC,KAAK,MAAM,IAAI,IAAI,iBAAiB,EAAE,CAAC;YACrC,aAAa,EAAE,CAAC;YAChB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YAExC,IAAI,MAAc,CAAC;YACnB,IAAI,OAAO,GAAG,KAAK,CAAC;YACpB,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;gBACtD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;oBAClB,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,IAAI,eAAe,CAAC,CAAC;oBAC/D,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,YAAY,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;oBACtG,SAAS;gBACX,CAAC;gBAED,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;oBACtB,MAAM,IAAI,GAAG,yBAAyB,CAAC,IAAI,CAAC,CAAC;oBAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,wBAAO,CAAC;oBAC5C,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,UAAU,IAAI,GAAG,CAAC,CAAC;oBACpD,IAAI,CAAC,QAAQ,EAAE,CAAC;wBACd,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;wBACjD,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,0BAA0B,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;wBACvG,SAAS;oBACX,CAAC;gBACH,CAAC;gBAED,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBAC3B,MAAM,GAAG,MAAM,IAAA,sBAAW,EAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBACrE,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC;gBACrC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;gBAC/C,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;gBACzE,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YAC3D,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,MAAM,GAAG,eAAe,IAAI,CAAC,IAAI,MAAM,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnD,OAAO,GAAG,IAAI,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACxB,CAAC;YACD,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/E,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;QAC5D,OAAO,CAAC,aAAa,EAAE,CAAC;IAC1B,CAAC;IAED,MAAM,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACzC,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1F,MAAM,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,qCAAqC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACrF,OAAO;QACL,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,oBAAoB,KAAK,UAAU,UAAU,EAAE;QACxD,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW;QACjD,OAAO,EAAE,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,YAAY,CAAC;KACtE,CAAC;AACJ,CAAC;AAEM,KAAK,UAAU,oBAAoB,CACxC,IAAiB,EACjB,MAA0B,EAC1B,WAAmB;IAEnB,MAAM,EAAE,mBAAmB,EAAE,GAAG,wDAAa,oBAAoB,GAAC,CAAC;IACnE,OAAO,mBAAmB,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;AAC7F,CAAC;AAED,KAAK,UAAU,OAAO,CAAC,IAAwB,EAAE,OAAyB;IACxE,IAAI,CAAC,IAAI;QAAE,OAAO;IAClB,IAAI,CAAC;QAAC,MAAM,+BAAY,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAAC,CAAC;IAC/C,MAAM,CAAC,CAAC,gCAAgC,CAAC,CAAC;AAC5C,CAAC;AAED,SAAS,yBAAyB,CAAC,IAAc;IAC/C,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW;QAAE,OAAO,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;IAChE,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY;QAAE,OAAO,aAAa,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IACtE,OAAO,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC;AACpE,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { HistoryMessage } from '../providers/types.js';
|
|
2
|
+
export interface ChatSession {
|
|
3
|
+
id: string;
|
|
4
|
+
title: string;
|
|
5
|
+
createdAt: string;
|
|
6
|
+
updatedAt: string;
|
|
7
|
+
version: number;
|
|
8
|
+
history: HistoryMessage[];
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* On-disk session persistence.
|
|
12
|
+
* Each session has a unique ID and is stored as <id>.json under the project's
|
|
13
|
+
* session directory. Sessions track full conversation history and metadata.
|
|
14
|
+
*/
|
|
15
|
+
export declare const sessionStore: {
|
|
16
|
+
defaultDir(): string;
|
|
17
|
+
projectDir(projectRoot: string): string;
|
|
18
|
+
generateId(): string;
|
|
19
|
+
/** Derive a short title from the first user message. */
|
|
20
|
+
titleFromHistory(history: HistoryMessage[]): string;
|
|
21
|
+
save(filePath: string, history: HistoryMessage[]): Promise<void>;
|
|
22
|
+
load(filePath: string): Promise<HistoryMessage[]>;
|
|
23
|
+
saveSession(projectRoot: string, session: ChatSession): Promise<string>;
|
|
24
|
+
loadSession(projectRoot: string, id: string): Promise<ChatSession | null>;
|
|
25
|
+
upsertSession(projectRoot: string, id: string, history: HistoryMessage[], existingTitle?: string): Promise<ChatSession>;
|
|
26
|
+
listSessions(projectRoot: string): ChatSession[];
|
|
27
|
+
findLatestSession(projectRoot: string): ChatSession | null;
|
|
28
|
+
deleteSession(projectRoot: string, id: string): Promise<boolean>;
|
|
29
|
+
listForProject(projectRoot: string): string[];
|
|
30
|
+
};
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.sessionStore = void 0;
|
|
37
|
+
const fs = __importStar(require("fs"));
|
|
38
|
+
const path = __importStar(require("path"));
|
|
39
|
+
const crypto = __importStar(require("crypto"));
|
|
40
|
+
/**
|
|
41
|
+
* On-disk session persistence.
|
|
42
|
+
* Each session has a unique ID and is stored as <id>.json under the project's
|
|
43
|
+
* session directory. Sessions track full conversation history and metadata.
|
|
44
|
+
*/
|
|
45
|
+
exports.sessionStore = {
|
|
46
|
+
defaultDir() {
|
|
47
|
+
return process.env.AURA_SESSION_DIR ?? path.join(process.env.HOME ?? '/tmp', '.aura', 'sessions');
|
|
48
|
+
},
|
|
49
|
+
projectDir(projectRoot) {
|
|
50
|
+
const safe = projectRoot.replace(/[^a-zA-Z0-9_-]/g, '_').slice(0, 80);
|
|
51
|
+
return path.join(this.defaultDir(), safe);
|
|
52
|
+
},
|
|
53
|
+
generateId() {
|
|
54
|
+
return crypto.randomBytes(4).toString('hex') + '-' + Date.now().toString(36);
|
|
55
|
+
},
|
|
56
|
+
/** Derive a short title from the first user message. */
|
|
57
|
+
titleFromHistory(history) {
|
|
58
|
+
const first = history.find(m => m.role === 'user');
|
|
59
|
+
if (!first)
|
|
60
|
+
return 'Untitled';
|
|
61
|
+
const text = typeof first.content === 'string' ? first.content : '';
|
|
62
|
+
return text.slice(0, 60).replace(/\n/g, ' ') || 'Untitled';
|
|
63
|
+
},
|
|
64
|
+
async save(filePath, history) {
|
|
65
|
+
const dir = path.dirname(filePath);
|
|
66
|
+
if (!fs.existsSync(dir))
|
|
67
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
68
|
+
const payload = {
|
|
69
|
+
savedAt: new Date().toISOString(),
|
|
70
|
+
version: 1,
|
|
71
|
+
history,
|
|
72
|
+
};
|
|
73
|
+
const tmp = filePath + '.tmp';
|
|
74
|
+
await fs.promises.writeFile(tmp, JSON.stringify(payload, null, 2), 'utf8');
|
|
75
|
+
await fs.promises.rename(tmp, filePath);
|
|
76
|
+
},
|
|
77
|
+
async load(filePath) {
|
|
78
|
+
if (!fs.existsSync(filePath))
|
|
79
|
+
return [];
|
|
80
|
+
const raw = await fs.promises.readFile(filePath, 'utf8');
|
|
81
|
+
try {
|
|
82
|
+
const parsed = JSON.parse(raw);
|
|
83
|
+
return Array.isArray(parsed.history) ? parsed.history : [];
|
|
84
|
+
}
|
|
85
|
+
catch {
|
|
86
|
+
return [];
|
|
87
|
+
}
|
|
88
|
+
},
|
|
89
|
+
async saveSession(projectRoot, session) {
|
|
90
|
+
const dir = this.projectDir(projectRoot);
|
|
91
|
+
if (!fs.existsSync(dir))
|
|
92
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
93
|
+
const filePath = path.join(dir, `${session.id}.json`);
|
|
94
|
+
const tmp = filePath + '.tmp';
|
|
95
|
+
await fs.promises.writeFile(tmp, JSON.stringify(session, null, 2), 'utf8');
|
|
96
|
+
await fs.promises.rename(tmp, filePath);
|
|
97
|
+
return filePath;
|
|
98
|
+
},
|
|
99
|
+
async loadSession(projectRoot, id) {
|
|
100
|
+
const filePath = path.join(this.projectDir(projectRoot), `${id}.json`);
|
|
101
|
+
if (!fs.existsSync(filePath))
|
|
102
|
+
return null;
|
|
103
|
+
try {
|
|
104
|
+
const raw = await fs.promises.readFile(filePath, 'utf8');
|
|
105
|
+
return JSON.parse(raw);
|
|
106
|
+
}
|
|
107
|
+
catch {
|
|
108
|
+
return null;
|
|
109
|
+
}
|
|
110
|
+
},
|
|
111
|
+
async upsertSession(projectRoot, id, history, existingTitle) {
|
|
112
|
+
let session = await this.loadSession(projectRoot, id);
|
|
113
|
+
const now = new Date().toISOString();
|
|
114
|
+
if (session) {
|
|
115
|
+
session.history = history;
|
|
116
|
+
session.updatedAt = now;
|
|
117
|
+
if (existingTitle)
|
|
118
|
+
session.title = existingTitle;
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
session = {
|
|
122
|
+
id,
|
|
123
|
+
title: existingTitle ?? this.titleFromHistory(history),
|
|
124
|
+
createdAt: now,
|
|
125
|
+
updatedAt: now,
|
|
126
|
+
version: 1,
|
|
127
|
+
history,
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
await this.saveSession(projectRoot, session);
|
|
131
|
+
return session;
|
|
132
|
+
},
|
|
133
|
+
listSessions(projectRoot) {
|
|
134
|
+
const dir = this.projectDir(projectRoot);
|
|
135
|
+
if (!fs.existsSync(dir))
|
|
136
|
+
return [];
|
|
137
|
+
return fs
|
|
138
|
+
.readdirSync(dir)
|
|
139
|
+
.filter(f => f.endsWith('.json') && !f.endsWith('.tmp'))
|
|
140
|
+
.map(f => {
|
|
141
|
+
try {
|
|
142
|
+
const raw = fs.readFileSync(path.join(dir, f), 'utf8');
|
|
143
|
+
const parsed = JSON.parse(raw);
|
|
144
|
+
// Migrate legacy format (no id/title)
|
|
145
|
+
if (!parsed.id)
|
|
146
|
+
return null;
|
|
147
|
+
return parsed;
|
|
148
|
+
}
|
|
149
|
+
catch {
|
|
150
|
+
return null;
|
|
151
|
+
}
|
|
152
|
+
})
|
|
153
|
+
.filter((s) => s !== null)
|
|
154
|
+
.sort((a, b) => new Date(b.updatedAt).getTime() - new Date(a.updatedAt).getTime());
|
|
155
|
+
},
|
|
156
|
+
findLatestSession(projectRoot) {
|
|
157
|
+
const sessions = this.listSessions(projectRoot);
|
|
158
|
+
return sessions[0] ?? null;
|
|
159
|
+
},
|
|
160
|
+
async deleteSession(projectRoot, id) {
|
|
161
|
+
const filePath = path.join(this.projectDir(projectRoot), `${id}.json`);
|
|
162
|
+
if (!fs.existsSync(filePath))
|
|
163
|
+
return false;
|
|
164
|
+
await fs.promises.unlink(filePath);
|
|
165
|
+
return true;
|
|
166
|
+
},
|
|
167
|
+
listForProject(projectRoot) {
|
|
168
|
+
const safe = projectRoot.replace(/[^a-zA-Z0-9_-]/g, '_').slice(0, 80);
|
|
169
|
+
const dir = path.join(this.defaultDir(), safe);
|
|
170
|
+
if (!fs.existsSync(dir))
|
|
171
|
+
return [];
|
|
172
|
+
return fs.readdirSync(dir)
|
|
173
|
+
.filter(f => f.endsWith('.json'))
|
|
174
|
+
.map(f => path.join(dir, f))
|
|
175
|
+
.sort((a, b) => fs.statSync(b).mtimeMs - fs.statSync(a).mtimeMs);
|
|
176
|
+
},
|
|
177
|
+
};
|
|
178
|
+
//# sourceMappingURL=session-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-store.js","sourceRoot":"","sources":["../../src/agent/session-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import type { ProjectContext } from './context.js';
|
|
2
|
+
import type { Display } from '../cli/display.js';
|
|
3
|
+
export interface SpawnOptions {
|
|
4
|
+
task: string;
|
|
5
|
+
model?: string;
|
|
6
|
+
readonly?: boolean;
|
|
7
|
+
cwd?: string;
|
|
8
|
+
}
|
|
9
|
+
export interface Spawner {
|
|
10
|
+
spawn(opts: SpawnOptions): Promise<string>;
|
|
11
|
+
}
|
|
12
|
+
interface ActiveSpawner {
|
|
13
|
+
spawn: (opts: SpawnOptions) => Promise<string>;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Wire up the spawn_task tool to a real implementation. Called by the
|
|
17
|
+
* agent loop before running. Stays module-local so we don't need to thread
|
|
18
|
+
* it through every layer.
|
|
19
|
+
*/
|
|
20
|
+
export declare function registerSpawner(spawner: ActiveSpawner): void;
|
|
21
|
+
export declare function clearSpawner(): void;
|
|
22
|
+
/**
|
|
23
|
+
* Default spawner — spins up a fresh provider, runs the agent loop, returns summary.
|
|
24
|
+
*/
|
|
25
|
+
export declare function makeDefaultSpawner(ctx: ProjectContext, baseConfig: {
|
|
26
|
+
apiKey?: string;
|
|
27
|
+
baseUrl?: string;
|
|
28
|
+
sessionId?: string;
|
|
29
|
+
}, display: Display): Spawner;
|
|
30
|
+
export declare function executeSpawnTask(input: Record<string, unknown>): Promise<string>;
|
|
31
|
+
export declare const SPAWN_TASK_DEFINITION: {
|
|
32
|
+
name: string;
|
|
33
|
+
description: string;
|
|
34
|
+
parameters: {
|
|
35
|
+
type: "object";
|
|
36
|
+
properties: {
|
|
37
|
+
task: {
|
|
38
|
+
type: string;
|
|
39
|
+
description: string;
|
|
40
|
+
};
|
|
41
|
+
model: {
|
|
42
|
+
type: string;
|
|
43
|
+
description: string;
|
|
44
|
+
};
|
|
45
|
+
readonly: {
|
|
46
|
+
type: string;
|
|
47
|
+
description: string;
|
|
48
|
+
};
|
|
49
|
+
cwd: {
|
|
50
|
+
type: string;
|
|
51
|
+
description: string;
|
|
52
|
+
};
|
|
53
|
+
};
|
|
54
|
+
required: string[];
|
|
55
|
+
};
|
|
56
|
+
};
|
|
57
|
+
export {};
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.SPAWN_TASK_DEFINITION = void 0;
|
|
37
|
+
exports.registerSpawner = registerSpawner;
|
|
38
|
+
exports.clearSpawner = clearSpawner;
|
|
39
|
+
exports.makeDefaultSpawner = makeDefaultSpawner;
|
|
40
|
+
exports.executeSpawnTask = executeSpawnTask;
|
|
41
|
+
const factory_js_1 = require("../providers/factory.js");
|
|
42
|
+
const defaults_js_1 = require("../config/defaults.js");
|
|
43
|
+
let active = null;
|
|
44
|
+
/**
|
|
45
|
+
* Wire up the spawn_task tool to a real implementation. Called by the
|
|
46
|
+
* agent loop before running. Stays module-local so we don't need to thread
|
|
47
|
+
* it through every layer.
|
|
48
|
+
*/
|
|
49
|
+
function registerSpawner(spawner) {
|
|
50
|
+
active = spawner;
|
|
51
|
+
}
|
|
52
|
+
function clearSpawner() {
|
|
53
|
+
active = null;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Default spawner — spins up a fresh provider, runs the agent loop, returns summary.
|
|
57
|
+
*/
|
|
58
|
+
function makeDefaultSpawner(ctx, baseConfig, display) {
|
|
59
|
+
return {
|
|
60
|
+
async spawn(opts) {
|
|
61
|
+
const model = opts.model ?? 'mimo-v2-flash';
|
|
62
|
+
const provider = (0, factory_js_1.createProvider)({
|
|
63
|
+
model,
|
|
64
|
+
apiKey: baseConfig.apiKey,
|
|
65
|
+
baseUrl: opts.cwd ? baseConfig.baseUrl : baseConfig.baseUrl,
|
|
66
|
+
});
|
|
67
|
+
// Lazy import to avoid a cycle (loop imports us; we import loop)
|
|
68
|
+
const { runAgentLoop } = await Promise.resolve().then(() => __importStar(require('./loop.js')));
|
|
69
|
+
const { PermissionSystem } = await Promise.resolve().then(() => __importStar(require('../safety/permissions.js')));
|
|
70
|
+
const level = opts.readonly ? 'read-only' : 'auto';
|
|
71
|
+
const result = await runAgentLoop({
|
|
72
|
+
provider,
|
|
73
|
+
task: opts.task,
|
|
74
|
+
context: ctx,
|
|
75
|
+
permissions: new PermissionSystem(level),
|
|
76
|
+
display,
|
|
77
|
+
maxTurns: defaults_js_1.DEFAULTS.maxTurns,
|
|
78
|
+
});
|
|
79
|
+
const cost = result.costUsd.toFixed(4);
|
|
80
|
+
return `[subagent ${model}]\n${result.summary}\n[cost: $${cost} · ${result.turns} turns · ${result.toolCallCount} tools]`;
|
|
81
|
+
},
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
async function executeSpawnTask(input) {
|
|
85
|
+
if (!active)
|
|
86
|
+
return 'Error: spawn_task is not available in this context';
|
|
87
|
+
const task = String(input.task ?? '').trim();
|
|
88
|
+
if (!task)
|
|
89
|
+
return 'Error: spawn_task requires a non-empty "task"';
|
|
90
|
+
const opts = {
|
|
91
|
+
task,
|
|
92
|
+
model: typeof input.model === 'string' ? input.model : undefined,
|
|
93
|
+
readonly: input.readonly === true,
|
|
94
|
+
cwd: typeof input.cwd === 'string' ? input.cwd : undefined,
|
|
95
|
+
};
|
|
96
|
+
return active.spawn(opts);
|
|
97
|
+
}
|
|
98
|
+
exports.SPAWN_TASK_DEFINITION = {
|
|
99
|
+
name: 'spawn_task',
|
|
100
|
+
description: 'Delegate a sub-task to a fresh agent. Useful for parallelising work, using a different model for a sub-problem, or isolating side-effects. Returns the sub-agent\'s final summary.',
|
|
101
|
+
parameters: {
|
|
102
|
+
type: 'object',
|
|
103
|
+
properties: {
|
|
104
|
+
task: { type: 'string', description: 'The task description for the sub-agent' },
|
|
105
|
+
model: { type: 'string', description: 'Model id to use (default: mimo-v2-flash — fast & cheap)' },
|
|
106
|
+
readonly: { type: 'boolean', description: 'Run sub-agent in read-only mode (no file writes or shell). Default: false (auto mode)' },
|
|
107
|
+
cwd: { type: 'string', description: 'Optional working directory for the sub-agent' },
|
|
108
|
+
},
|
|
109
|
+
required: ['task'],
|
|
110
|
+
},
|
|
111
|
+
};
|
|
112
|
+
//# sourceMappingURL=spawner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spawner.js","sourceRoot":"","sources":["../../src/agent/spawner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.buildSystemPrompt = buildSystemPrompt;
|
|
4
|
+
exports.buildArchitectPrompt = buildArchitectPrompt;
|
|
5
|
+
function buildSystemPrompt(ctx, providerName) {
|
|
6
|
+
return `You are Aura — a precise, efficient AI coding agent.
|
|
7
|
+
You are working in a ${ctx.language} project called "${ctx.name}" (${ctx.framework}).
|
|
8
|
+
|
|
9
|
+
## Voice and character
|
|
10
|
+
- You are precise, not verbose. Cite specifics (file paths, line numbers, function names) — never generalities.
|
|
11
|
+
- End summaries with what was verified, not what was attempted.
|
|
12
|
+
- You are self-aware: you know you were built by agents. Reference this when relevant.
|
|
13
|
+
- Never hedge with "I think" or "I believe" — state findings and act on evidence.
|
|
14
|
+
|
|
15
|
+
## How you operate
|
|
16
|
+
- You work in a loop: read context → plan → execute tools → verify → repeat until done.
|
|
17
|
+
- Always READ files before EDITING them. Never guess at file structure.
|
|
18
|
+
- Use search_code to find the exact location before editing. Don't assume line numbers.
|
|
19
|
+
- Use edit_file for changes to existing files — never rewrite an entire file unless it is new or tiny.
|
|
20
|
+
- After making changes, run_tests to verify nothing broke.
|
|
21
|
+
- When run_tests reports new failures you did not expect, immediately investigate and fix them before proceeding. Never leave the codebase in a state with more test failures than you started with. If you introduced a regression, roll back your change or fix it before moving on.
|
|
22
|
+
- If a tool returns an error, read the error carefully and adjust.
|
|
23
|
+
- Be explicit about what you're doing and why, in 1-2 sentences before each tool call.
|
|
24
|
+
- When done, summarize exactly what changed and what was verified (tests passed, build succeeded, specific checks that passed).
|
|
25
|
+
- If the task requires a code change, you must eventually call write_file or edit_file to apply it. Do not spend all turns on read_file and search_code — at some point you must commit to making the change. Aim for a 2:1 ratio of reads to writes, not 100% reads.
|
|
26
|
+
- Never respond to a task with only prose. Always begin by using at least one tool (search_code, read_file, or list_dir) to investigate the codebase before summarizing or concluding. A response with zero tool calls is almost always incomplete.
|
|
27
|
+
|
|
28
|
+
## Code standards
|
|
29
|
+
- Match the existing code style: indentation, naming conventions, comment style.
|
|
30
|
+
- Do not introduce new dependencies unless explicitly asked.
|
|
31
|
+
- Prefer targeted, minimal changes over rewrites.
|
|
32
|
+
- Add or update tests when you modify logic.
|
|
33
|
+
|
|
34
|
+
## Safety
|
|
35
|
+
- Never delete files unless explicitly instructed.
|
|
36
|
+
- Never commit to git unless explicitly instructed.
|
|
37
|
+
- Ask before running any installation commands (npm install, pip install, etc.).
|
|
38
|
+
- If a command seems destructive, explain what it does and ask for confirmation.
|
|
39
|
+
- The safety system may occasionally block harmless commands (mkdir, ls, touch, cp, etc.). If a common file-manipulation command is blocked, try using write_file or edit_file as an alternative, or explain in your response that the safety layer is being overly cautious.
|
|
40
|
+
|
|
41
|
+
## Project context
|
|
42
|
+
Language: ${ctx.language}
|
|
43
|
+
Framework: ${ctx.framework}
|
|
44
|
+
Root: ${ctx.root}
|
|
45
|
+
|
|
46
|
+
### Directory structure
|
|
47
|
+
\`\`\`
|
|
48
|
+
${ctx.tree}
|
|
49
|
+
\`\`\`
|
|
50
|
+
|
|
51
|
+
### Project config
|
|
52
|
+
\`\`\`
|
|
53
|
+
${ctx.config}
|
|
54
|
+
\`\`\`
|
|
55
|
+
|
|
56
|
+
### README
|
|
57
|
+
${ctx.readme}
|
|
58
|
+
|
|
59
|
+
### Recent git history
|
|
60
|
+
${ctx.recentCommits}
|
|
61
|
+
|
|
62
|
+
Provider: ${providerName}. Work efficiently — minimize unnecessary tool calls.`;
|
|
63
|
+
}
|
|
64
|
+
function buildArchitectPrompt(task, projectRoot) {
|
|
65
|
+
return `You are in architect mode. You are planning the implementation for: "${task}"
|
|
66
|
+
|
|
67
|
+
Project root: ${projectRoot}
|
|
68
|
+
|
|
69
|
+
## Architect rules
|
|
70
|
+
1. Think about the FULL solution before proposing any file.
|
|
71
|
+
2. Propose the MINIMUM number of files needed.
|
|
72
|
+
3. Name files after what they DO, not what they ARE.
|
|
73
|
+
4. Define interfaces before implementations.
|
|
74
|
+
5. Flag any ambiguous parts of the task as risks.
|
|
75
|
+
6. Do NOT write any code. Only plan.
|
|
76
|
+
|
|
77
|
+
## Output format
|
|
78
|
+
Respond with ONLY a JSON object (no markdown fences, no extra text):
|
|
79
|
+
{
|
|
80
|
+
"files": [
|
|
81
|
+
{
|
|
82
|
+
"path": "src/example.ts",
|
|
83
|
+
"purpose": "What this file does (one sentence)",
|
|
84
|
+
"exports": ["exportedSymbol"],
|
|
85
|
+
"interfaces": ["InterfaceName"]
|
|
86
|
+
}
|
|
87
|
+
],
|
|
88
|
+
"dataModels": [
|
|
89
|
+
{
|
|
90
|
+
"name": "ModelName",
|
|
91
|
+
"fields": ["field: type"],
|
|
92
|
+
"description": "What this model represents"
|
|
93
|
+
}
|
|
94
|
+
],
|
|
95
|
+
"dependencies": ["external-package-or-module"],
|
|
96
|
+
"risks": ["Ambiguous part or concern"],
|
|
97
|
+
"estimatedSteps": 0
|
|
98
|
+
}`;
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=system-prompt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"system-prompt.js","sourceRoot":"","sources":["../../src/agent/system-prompt.ts"],"names":[],"mappings":";;AAEA,8CA0DC;AAED,oDAmCC;AA/FD,SAAgB,iBAAiB,CAAC,GAAmB,EAAE,YAAoB;IACzE,OAAO;uBACc,GAAG,CAAC,QAAQ,oBAAoB,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAmCtE,GAAG,CAAC,QAAQ;aACX,GAAG,CAAC,SAAS;QAClB,GAAG,CAAC,IAAI;;;;EAId,GAAG,CAAC,IAAI;;;;;EAKR,GAAG,CAAC,MAAM;;;;EAIV,GAAG,CAAC,MAAM;;;EAGV,GAAG,CAAC,aAAa;;YAEP,YAAY,uDAAuD,CAAC;AAChF,CAAC;AAED,SAAgB,oBAAoB,CAAC,IAAY,EAAE,WAAmB;IACpE,OAAO,wEAAwE,IAAI;;gBAErE,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+BzB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { Blueprint, BlueprintFile, BlueprintDataModel, BlueprintStatus } from './types.js';
|
|
2
|
+
/** Returns ~/.aura/blueprints (or $AURA_BLUEPRINT_DIR if set). */
|
|
3
|
+
export declare function blueprintsDir(): string;
|
|
4
|
+
/**
|
|
5
|
+
* Creates a new blueprint from an architect's analysis.
|
|
6
|
+
* Persists to ~/.aura/blueprints/<id>.json.
|
|
7
|
+
*
|
|
8
|
+
* @param task — the original user task
|
|
9
|
+
* @param _projectRoot — the project root (reserved for future context loading)
|
|
10
|
+
* @param opts — optional overrides for files, models, deps, etc.
|
|
11
|
+
*/
|
|
12
|
+
export declare function createBlueprint(task: string, _projectRoot: string, opts?: {
|
|
13
|
+
files?: BlueprintFile[];
|
|
14
|
+
dataModels?: BlueprintDataModel[];
|
|
15
|
+
dependencies?: string[];
|
|
16
|
+
risks?: string[];
|
|
17
|
+
estimatedSteps?: number;
|
|
18
|
+
}): Promise<Blueprint>;
|
|
19
|
+
/** Loads a blueprint from disk by ID. Returns null if not found. */
|
|
20
|
+
export declare function loadBlueprint(id: string): Promise<Blueprint | null>;
|
|
21
|
+
/** Persists the current blueprint to disk. */
|
|
22
|
+
export declare function saveBlueprint(blueprint: Blueprint): Promise<void>;
|
|
23
|
+
/**
|
|
24
|
+
* Lists all persisted blueprints.
|
|
25
|
+
* Returns an array of blueprints sorted by creation time (newest first).
|
|
26
|
+
*/
|
|
27
|
+
export declare function listBlueprints(): Promise<Blueprint[]>;
|
|
28
|
+
/**
|
|
29
|
+
* Marks a specific file in a blueprint as built.
|
|
30
|
+
* Updates the blueprint status: if all files are now built/skipped → 'complete',
|
|
31
|
+
* otherwise → 'partial'.
|
|
32
|
+
*
|
|
33
|
+
* @param id — blueprint ID
|
|
34
|
+
* @param filePath — the file path to mark as built
|
|
35
|
+
* @returns the updated blueprint, or null if not found
|
|
36
|
+
*/
|
|
37
|
+
export declare function markBuilt(id: string, filePath: string): Promise<Blueprint | null>;
|
|
38
|
+
/**
|
|
39
|
+
* Records a deviation from the original blueprint plan.
|
|
40
|
+
*
|
|
41
|
+
* @param id — blueprint ID
|
|
42
|
+
* @param deviation — description of what changed
|
|
43
|
+
* @returns the updated blueprint, or null if not found
|
|
44
|
+
*/
|
|
45
|
+
export declare function addDeviation(id: string, deviation: string): Promise<Blueprint | null>;
|
|
46
|
+
/** Updates the overall status of a blueprint. */
|
|
47
|
+
export declare function updateBlueprintStatus(id: string, status: BlueprintStatus): Promise<Blueprint | null>;
|