aura-code 0.6.3 → 0.10.1
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/README.md +47 -164
- package/dist/agent/affect.d.ts +13 -0
- package/dist/agent/affect.js +34 -0
- package/dist/agent/affect.js.map +1 -0
- package/dist/agent/compactor.d.ts +27 -4
- package/dist/agent/compactor.js +185 -54
- package/dist/agent/compactor.js.map +1 -1
- package/dist/agent/confess.d.ts +35 -0
- package/dist/agent/confess.js +296 -0
- package/dist/agent/confess.js.map +1 -0
- package/dist/agent/context.d.ts +0 -4
- package/dist/agent/context.js +0 -38
- package/dist/agent/context.js.map +1 -1
- package/dist/agent/domain-expertise.d.ts +22 -0
- package/dist/agent/domain-expertise.js +110 -0
- package/dist/agent/domain-expertise.js.map +1 -0
- package/dist/agent/executive-queue.d.ts +26 -0
- package/dist/agent/executive-queue.js +50 -0
- package/dist/agent/executive-queue.js.map +1 -0
- package/dist/agent/generational-flush.d.ts +28 -0
- package/dist/agent/generational-flush.js +48 -0
- package/dist/agent/generational-flush.js.map +1 -0
- package/dist/agent/loop-profile.d.ts +50 -0
- package/dist/agent/loop-profile.js +88 -0
- package/dist/agent/loop-profile.js.map +1 -0
- package/dist/agent/loop.d.ts +14 -5
- package/dist/agent/loop.js +167 -39
- package/dist/agent/loop.js.map +1 -1
- package/dist/agent/memory-consolidate.d.ts +14 -0
- package/dist/agent/memory-consolidate.js +141 -0
- package/dist/agent/memory-consolidate.js.map +1 -0
- package/dist/agent/mixture.d.ts +33 -0
- package/dist/agent/mixture.js +138 -0
- package/dist/agent/mixture.js.map +1 -0
- package/dist/agent/spawner.js +2 -2
- package/dist/agent/spawner.js.map +1 -1
- package/dist/agent/system-prompt.d.ts +1 -1
- package/dist/agent/system-prompt.js +50 -22
- package/dist/agent/system-prompt.js.map +1 -1
- package/dist/agent/unified-memory.d.ts +15 -0
- package/dist/agent/unified-memory.js +164 -0
- package/dist/agent/unified-memory.js.map +1 -0
- package/dist/checkpoints/engine.d.ts +44 -0
- package/dist/checkpoints/engine.js +324 -0
- package/dist/checkpoints/engine.js.map +1 -0
- package/dist/cli/command-palette.d.ts +26 -0
- package/dist/cli/command-palette.js +133 -0
- package/dist/cli/command-palette.js.map +1 -0
- package/dist/cli/context-health.d.ts +51 -0
- package/dist/cli/context-health.js +187 -0
- package/dist/cli/context-health.js.map +1 -0
- package/dist/cli/diamond.d.ts +67 -0
- package/dist/cli/diamond.js +222 -12
- package/dist/cli/diamond.js.map +1 -1
- package/dist/cli/dic.d.ts +2 -0
- package/dist/cli/dic.js +106 -0
- package/dist/cli/dic.js.map +1 -0
- package/dist/cli/diff-view.d.ts +18 -0
- package/dist/cli/diff-view.js +114 -0
- package/dist/cli/diff-view.js.map +1 -0
- package/dist/cli/display.d.ts +18 -4
- package/dist/cli/display.js +74 -151
- package/dist/cli/display.js.map +1 -1
- package/dist/cli/help-data.d.ts +7 -0
- package/dist/cli/help-data.js +80 -0
- package/dist/cli/help-data.js.map +1 -0
- package/dist/cli/index.js +1002 -852
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/markdown.d.ts +5 -0
- package/dist/cli/markdown.js +128 -0
- package/dist/cli/markdown.js.map +1 -0
- package/dist/cli/model-select.d.ts +39 -0
- package/dist/cli/model-select.js +65 -0
- package/dist/cli/model-select.js.map +1 -0
- package/dist/cli/tui.d.ts +34 -0
- package/dist/cli/tui.js +1176 -0
- package/dist/cli/tui.js.map +1 -0
- package/dist/config/defaults.d.ts +6 -17
- package/dist/config/defaults.js +25 -46
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/project-config.d.ts +2 -6
- package/dist/config/project-config.js +2 -2
- package/dist/config/project-config.js.map +1 -1
- package/dist/doctor/checks.d.ts +18 -0
- package/dist/doctor/checks.js +524 -0
- package/dist/doctor/checks.js.map +1 -0
- package/dist/doctor/index.d.ts +4 -0
- package/dist/doctor/index.js +229 -0
- package/dist/doctor/index.js.map +1 -0
- package/dist/doctor/repair.d.ts +19 -0
- package/dist/doctor/repair.js +126 -0
- package/dist/doctor/repair.js.map +1 -0
- package/dist/doctor/types.d.ts +38 -0
- package/dist/doctor/types.js +10 -0
- package/dist/doctor/types.js.map +1 -0
- package/dist/dream/dream.d.ts +79 -59
- package/dist/dream/dream.js +324 -144
- package/dist/dream/dream.js.map +1 -1
- package/dist/dream/episode.d.ts +17 -0
- package/dist/dream/episode.js +116 -0
- package/dist/dream/episode.js.map +1 -0
- package/dist/kanban/engine.d.ts +26 -0
- package/dist/kanban/engine.js +208 -0
- package/dist/kanban/engine.js.map +1 -0
- package/dist/kanban/types.d.ts +19 -0
- package/dist/kanban/types.js +9 -1
- package/dist/kanban/types.js.map +1 -1
- package/dist/machina/render-html.js +4 -2
- package/dist/machina/render-html.js.map +1 -1
- package/dist/machina/render-terminal.js +11 -4
- package/dist/machina/render-terminal.js.map +1 -1
- package/dist/machina/repair.d.ts +23 -0
- package/dist/machina/repair.js +98 -0
- package/dist/machina/repair.js.map +1 -0
- package/dist/machina/spec.js +12 -12
- package/dist/machina/spec.js.map +1 -1
- package/dist/machina/verify.d.ts +13 -1
- package/dist/machina/verify.js +12 -2
- package/dist/machina/verify.js.map +1 -1
- package/dist/mining/extract.d.ts +34 -0
- package/dist/mining/extract.js +229 -0
- package/dist/mining/extract.js.map +1 -0
- package/dist/mining/refine.d.ts +28 -0
- package/dist/mining/refine.js +256 -0
- package/dist/mining/refine.js.map +1 -0
- package/dist/perception/extractor.js +5 -3
- package/dist/perception/extractor.js.map +1 -1
- package/dist/perception/graph-store.d.ts +0 -11
- package/dist/perception/graph-store.js +0 -33
- package/dist/perception/graph-store.js.map +1 -1
- package/dist/perception/index.d.ts +1 -1
- package/dist/perception/index.js +1 -2
- package/dist/perception/index.js.map +1 -1
- package/dist/plugins/commands.d.ts +38 -0
- package/dist/plugins/commands.js +134 -0
- package/dist/plugins/commands.js.map +1 -0
- package/dist/plugins/frontmatter.d.ts +14 -0
- package/dist/plugins/frontmatter.js +78 -0
- package/dist/plugins/frontmatter.js.map +1 -0
- package/dist/plugins/hooks.d.ts +12 -0
- package/dist/plugins/hooks.js +148 -0
- package/dist/plugins/hooks.js.map +1 -0
- package/dist/plugins/loader.d.ts +7 -0
- package/dist/plugins/loader.js +255 -0
- package/dist/plugins/loader.js.map +1 -0
- package/dist/plugins/market.d.ts +23 -0
- package/dist/plugins/market.js +281 -0
- package/dist/plugins/market.js.map +1 -0
- package/dist/plugins/types.d.ts +90 -0
- package/dist/plugins/types.js +20 -0
- package/dist/plugins/types.js.map +1 -0
- package/dist/providers/anthropic-oauth-draft.d.ts +119 -0
- package/dist/providers/anthropic-oauth-draft.js +414 -0
- package/dist/providers/anthropic-oauth-draft.js.map +1 -0
- package/dist/providers/anthropic.d.ts +4 -1
- package/dist/providers/anthropic.js +35 -7
- package/dist/providers/anthropic.js.map +1 -1
- package/dist/providers/factory.d.ts +43 -19
- package/dist/providers/factory.js +183 -129
- package/dist/providers/factory.js.map +1 -1
- package/dist/providers/google.js +9 -22
- package/dist/providers/google.js.map +1 -1
- package/dist/providers/live-models.d.ts +23 -0
- package/dist/providers/live-models.js +145 -0
- package/dist/providers/live-models.js.map +1 -0
- package/dist/providers/openai-compatible.d.ts +1 -12
- package/dist/providers/openai-compatible.js +71 -108
- package/dist/providers/openai-compatible.js.map +1 -1
- package/dist/providers/resilient-factory.js +1 -1
- package/dist/providers/resilient-factory.js.map +1 -1
- package/dist/repl/queue.d.ts +22 -0
- package/dist/repl/queue.js +165 -0
- package/dist/repl/queue.js.map +1 -0
- package/dist/repl/side-channel.d.ts +23 -0
- package/dist/repl/side-channel.js +63 -0
- package/dist/repl/side-channel.js.map +1 -0
- package/dist/research/council.d.ts +2 -0
- package/dist/research/council.js +29 -4
- package/dist/research/council.js.map +1 -1
- package/dist/ruby/alternator.d.ts +11 -30
- package/dist/ruby/alternator.js +59 -38
- package/dist/ruby/alternator.js.map +1 -1
- package/dist/ruby/episode-capture.d.ts +0 -10
- package/dist/ruby/episode-capture.js +0 -33
- package/dist/ruby/episode-capture.js.map +1 -1
- package/dist/ruby/types.js +1 -1
- package/dist/ruby/types.js.map +1 -1
- package/dist/safety/path-jail.d.ts +17 -0
- package/dist/safety/path-jail.js +100 -0
- package/dist/safety/path-jail.js.map +1 -0
- package/dist/safety/permissions.d.ts +12 -21
- package/dist/safety/permissions.js +81 -216
- package/dist/safety/permissions.js.map +1 -1
- package/dist/safety/ssrf.d.ts +29 -0
- package/dist/safety/ssrf.js +185 -0
- package/dist/safety/ssrf.js.map +1 -0
- package/dist/server/index.js +64 -10
- package/dist/server/index.js.map +1 -1
- package/dist/setup/first-run.d.ts +0 -24
- package/dist/setup/first-run.js +10 -344
- package/dist/setup/first-run.js.map +1 -1
- package/dist/setup/key-store.d.ts +12 -0
- package/dist/setup/key-store.js +108 -0
- package/dist/setup/key-store.js.map +1 -0
- package/dist/setup/provider-registry.js +31 -18
- package/dist/setup/provider-registry.js.map +1 -1
- package/dist/setup/provider-test.d.ts +7 -0
- package/dist/setup/provider-test.js +73 -10
- package/dist/setup/provider-test.js.map +1 -1
- package/dist/setup/provider-wizard.d.ts +4 -1
- package/dist/setup/provider-wizard.js +92 -26
- package/dist/setup/provider-wizard.js.map +1 -1
- package/dist/setup/xiaomi.d.ts +1 -1
- package/dist/setup/xiaomi.js +3 -3
- package/dist/setup/xiaomi.js.map +1 -1
- package/dist/tools/browser.js +14 -10
- package/dist/tools/browser.js.map +1 -1
- package/dist/tools/clipboard.js +7 -1
- package/dist/tools/clipboard.js.map +1 -1
- package/dist/tools/dictate.d.ts +60 -0
- package/dist/tools/dictate.js +983 -0
- package/dist/tools/dictate.js.map +1 -0
- package/dist/tools/dictate_patched.js +1057 -0
- package/dist/tools/edit-file.js +10 -2
- package/dist/tools/edit-file.js.map +1 -1
- package/dist/tools/http-request.js +14 -4
- package/dist/tools/http-request.js.map +1 -1
- package/dist/tools/image-read.js +34 -2
- package/dist/tools/image-read.js.map +1 -1
- package/dist/tools/index.d.ts +16 -1
- package/dist/tools/index.js +59 -8
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/mcp.js +12 -0
- package/dist/tools/mcp.js.map +1 -1
- package/dist/tools/read-file.js +10 -14
- package/dist/tools/read-file.js.map +1 -1
- package/dist/tools/telegram-audio-policy.d.ts +30 -0
- package/dist/tools/telegram-audio-policy.js +49 -0
- package/dist/tools/telegram-audio-policy.js.map +1 -0
- package/dist/tools/telegram-bot.js +1136 -537
- package/dist/tools/telegram-bot.js.map +1 -1
- package/dist/tools/telegram-voice.d.ts +18 -5
- package/dist/tools/telegram-voice.js +54 -12
- package/dist/tools/telegram-voice.js.map +1 -1
- package/dist/tools/telegram.d.ts +3 -3
- package/dist/tools/telegram.js +5 -84
- package/dist/tools/telegram.js.map +1 -1
- package/dist/tools/tools.d.ts +2 -14
- package/dist/tools/tools.js +79 -144
- package/dist/tools/tools.js.map +1 -1
- package/dist/tools/web-fetch.js +39 -7
- package/dist/tools/web-fetch.js.map +1 -1
- package/dist/tools/web-search.d.ts +0 -20
- package/dist/tools/web-search.js +40 -137
- package/dist/tools/web-search.js.map +1 -1
- package/dist/util/errors.js +1 -15
- package/dist/util/errors.js.map +1 -1
- package/dist/util/json-repair.d.ts +11 -0
- package/dist/util/json-repair.js +31 -0
- package/dist/util/json-repair.js.map +1 -0
- package/dist/util/rate-limiter.js +2 -8
- package/dist/util/rate-limiter.js.map +1 -1
- package/dist/viz/index.js +793 -792
- package/dist/viz/index.js.map +1 -1
- package/package.json +12 -32
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"alternator.js","sourceRoot":"","sources":["../../src/ruby/alternator.ts"],"names":[],"mappings":";;;AAAA,mCAAoC;
|
|
1
|
+
{"version":3,"file":"alternator.js","sourceRoot":"","sources":["../../src/ruby/alternator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,4 @@
|
|
|
1
1
|
import type { Episode } from './types.js';
|
|
2
|
-
/**
|
|
3
|
-
* Rough character-based token estimation (≈1 token per 4 characters).
|
|
4
|
-
* Used only for episode recording when the provider does not report usage
|
|
5
|
-
* (e.g. MiMo streaming, Google Gemini streaming).
|
|
6
|
-
*/
|
|
7
|
-
export declare function estimateTokens(text: string | undefined): number;
|
|
8
2
|
/** Stats returned by {@link getEpisodeStats}. */
|
|
9
3
|
export interface EpisodeStats {
|
|
10
4
|
total: number;
|
|
@@ -29,10 +23,6 @@ export declare const episodeStore: {
|
|
|
29
23
|
episodePath(projectRoot: string, id: string): string;
|
|
30
24
|
/**
|
|
31
25
|
* Persists one episode to `~/.aura/episodes/{projectHash}/{id}.json`.
|
|
32
|
-
*
|
|
33
|
-
* When the provider did not report token usage (totalTokens === 0), fills in
|
|
34
|
-
* a character-based estimate from the episode's output text so that fine-tune
|
|
35
|
-
* readiness and competence tracking still have meaningful token counts.
|
|
36
26
|
*/
|
|
37
27
|
saveEpisode(projectRoot: string, episode: Episode): Promise<void>;
|
|
38
28
|
/**
|
|
@@ -34,26 +34,9 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.getEpisodeStats = exports.deleteEpisode = exports.loadEpisodes = exports.saveEpisode = exports.episodeStore = void 0;
|
|
37
|
-
exports.estimateTokens = estimateTokens;
|
|
38
37
|
const fs = __importStar(require("fs"));
|
|
39
38
|
const path = __importStar(require("path"));
|
|
40
39
|
const competence_js_1 = require("./competence.js");
|
|
41
|
-
// ─────────────────────────────────────────────────────────────────────────────
|
|
42
|
-
// Episode persistence
|
|
43
|
-
// ─────────────────────────────────────────────────────────────────────────────
|
|
44
|
-
//
|
|
45
|
-
// Stores alternation episodes under ~/.aura/episodes/{projectHash}/ so
|
|
46
|
-
// Ruby competence and fine-tune readiness can be computed per project.
|
|
47
|
-
/**
|
|
48
|
-
* Rough character-based token estimation (≈1 token per 4 characters).
|
|
49
|
-
* Used only for episode recording when the provider does not report usage
|
|
50
|
-
* (e.g. MiMo streaming, Google Gemini streaming).
|
|
51
|
-
*/
|
|
52
|
-
function estimateTokens(text) {
|
|
53
|
-
if (!text)
|
|
54
|
-
return 0;
|
|
55
|
-
return Math.ceil(text.length / 4);
|
|
56
|
-
}
|
|
57
40
|
/**
|
|
58
41
|
* On-disk episode persistence for the Ruby Principle.
|
|
59
42
|
* Mirrors {@link sessionStore} — atomic `.tmp` writes, namespaced by project hash.
|
|
@@ -78,23 +61,8 @@ exports.episodeStore = {
|
|
|
78
61
|
},
|
|
79
62
|
/**
|
|
80
63
|
* Persists one episode to `~/.aura/episodes/{projectHash}/{id}.json`.
|
|
81
|
-
*
|
|
82
|
-
* When the provider did not report token usage (totalTokens === 0), fills in
|
|
83
|
-
* a character-based estimate from the episode's output text so that fine-tune
|
|
84
|
-
* readiness and competence tracking still have meaningful token counts.
|
|
85
64
|
*/
|
|
86
65
|
async saveEpisode(projectRoot, episode) {
|
|
87
|
-
// Fill estimated tokens when the provider reported 0
|
|
88
|
-
if (episode.rubyAttempted && !episode.tokensUsed.ruby) {
|
|
89
|
-
const est = estimateTokens(episode.rubyOutput);
|
|
90
|
-
if (est > 0)
|
|
91
|
-
episode = { ...episode, tokensUsed: { ...episode.tokensUsed, ruby: est } };
|
|
92
|
-
}
|
|
93
|
-
if (episode.largeModelUsed && !episode.tokensUsed.largeModel) {
|
|
94
|
-
const est = estimateTokens(episode.largeModelOutput);
|
|
95
|
-
if (est > 0)
|
|
96
|
-
episode = { ...episode, tokensUsed: { ...episode.tokensUsed, largeModel: est } };
|
|
97
|
-
}
|
|
98
66
|
const dir = this.projectDir(projectRoot);
|
|
99
67
|
if (!fs.existsSync(dir))
|
|
100
68
|
fs.mkdirSync(dir, { recursive: true });
|
|
@@ -189,5 +157,4 @@ exports.saveEpisode = exports.episodeStore.saveEpisode.bind(exports.episodeStore
|
|
|
189
157
|
exports.loadEpisodes = exports.episodeStore.loadEpisodes.bind(exports.episodeStore);
|
|
190
158
|
exports.deleteEpisode = exports.episodeStore.deleteEpisode.bind(exports.episodeStore);
|
|
191
159
|
exports.getEpisodeStats = exports.episodeStore.getEpisodeStats.bind(exports.episodeStore);
|
|
192
|
-
// estimateTokens is already a top-level export above
|
|
193
160
|
//# sourceMappingURL=episode-capture.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"episode-capture.js","sourceRoot":"","sources":["../../src/ruby/episode-capture.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"episode-capture.js","sourceRoot":"","sources":["../../src/ruby/episode-capture.ts"],"names":[],"mappings":"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"}
|
package/dist/ruby/types.js
CHANGED
package/dist/ruby/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/ruby/types.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,8BAA8B;AAC9B,gFAAgF;AAChF,EAAE;AACF,uEAAuE;AACvE,6EAA6E;AAC7E,yEAAyE;AACzE,0BAA0B;;;AAkD1B,4DAA4D;AAC/C,QAAA,mBAAmB,GAAe;IAC7C,SAAS,EAAE,oBAAoB;IAC/B,aAAa,EAAE,2BAA2B;IAC1C,mBAAmB,EAAE,GAAG;IACxB,WAAW,EAAE,CAAC;IACd,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/ruby/types.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,8BAA8B;AAC9B,gFAAgF;AAChF,EAAE;AACF,uEAAuE;AACvE,6EAA6E;AAC7E,yEAAyE;AACzE,0BAA0B;;;AAkD1B,4DAA4D;AAC/C,QAAA,mBAAmB,GAAe;IAC7C,SAAS,EAAE,oBAAoB;IAC/B,aAAa,EAAE,2BAA2B;IAC1C,mBAAmB,EAAE,GAAG;IACxB,WAAW,EAAE,CAAC;IACd,OAAO,EAAE,IAAI;CACd,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Filesystem containment: every file tool must keep its target inside the
|
|
3
|
+
* project root. Without this, a model-issued (or prompt-injected) path like
|
|
4
|
+
* `../../../home/user/.ssh/authorized_keys` or an absolute `/etc/passwd`
|
|
5
|
+
* resolves and reads/writes freely with the user's full privileges.
|
|
6
|
+
*/
|
|
7
|
+
export declare class PathJailError extends Error {
|
|
8
|
+
readonly inputPath: string;
|
|
9
|
+
constructor(inputPath: string);
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Resolve `inputPath` (relative to `root`, or absolute) and guarantee the
|
|
13
|
+
* result stays within `root`. Throws {@link PathJailError} on escape.
|
|
14
|
+
* Absolute paths outside the root, `..` traversal, and symlink escapes are
|
|
15
|
+
* all rejected.
|
|
16
|
+
*/
|
|
17
|
+
export declare function resolveInRoot(root: string, inputPath: string): string;
|
|
@@ -0,0 +1,100 @@
|
|
|
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.PathJailError = void 0;
|
|
37
|
+
exports.resolveInRoot = resolveInRoot;
|
|
38
|
+
const fs = __importStar(require("fs"));
|
|
39
|
+
const path = __importStar(require("path"));
|
|
40
|
+
/**
|
|
41
|
+
* Filesystem containment: every file tool must keep its target inside the
|
|
42
|
+
* project root. Without this, a model-issued (or prompt-injected) path like
|
|
43
|
+
* `../../../home/user/.ssh/authorized_keys` or an absolute `/etc/passwd`
|
|
44
|
+
* resolves and reads/writes freely with the user's full privileges.
|
|
45
|
+
*/
|
|
46
|
+
class PathJailError extends Error {
|
|
47
|
+
inputPath;
|
|
48
|
+
constructor(inputPath) {
|
|
49
|
+
super(`Path escapes the project root: ${inputPath}`);
|
|
50
|
+
this.inputPath = inputPath;
|
|
51
|
+
this.name = 'PathJailError';
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
exports.PathJailError = PathJailError;
|
|
55
|
+
/**
|
|
56
|
+
* Resolve the deepest existing ancestor of `p` through the real filesystem
|
|
57
|
+
* (following symlinks), then re-append the not-yet-existing tail. This makes
|
|
58
|
+
* containment checks robust against symlink escapes: a symlink anywhere in
|
|
59
|
+
* the existing prefix is resolved to its real location before we compare,
|
|
60
|
+
* while still allowing writes to paths that don't exist yet.
|
|
61
|
+
*/
|
|
62
|
+
function realpathAllowingMissing(p) {
|
|
63
|
+
let existing = path.resolve(p);
|
|
64
|
+
const tail = [];
|
|
65
|
+
while (!fs.existsSync(existing)) {
|
|
66
|
+
const parent = path.dirname(existing);
|
|
67
|
+
if (parent === existing)
|
|
68
|
+
break; // reached the filesystem root
|
|
69
|
+
tail.unshift(path.basename(existing));
|
|
70
|
+
existing = parent;
|
|
71
|
+
}
|
|
72
|
+
let real;
|
|
73
|
+
try {
|
|
74
|
+
real = fs.realpathSync(existing);
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
real = existing;
|
|
78
|
+
}
|
|
79
|
+
return tail.length ? path.join(real, ...tail) : real;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Resolve `inputPath` (relative to `root`, or absolute) and guarantee the
|
|
83
|
+
* result stays within `root`. Throws {@link PathJailError} on escape.
|
|
84
|
+
* Absolute paths outside the root, `..` traversal, and symlink escapes are
|
|
85
|
+
* all rejected.
|
|
86
|
+
*/
|
|
87
|
+
function resolveInRoot(root, inputPath) {
|
|
88
|
+
const realRoot = realpathAllowingMissing(root);
|
|
89
|
+
// path.resolve ignores realRoot when inputPath is absolute; the containment
|
|
90
|
+
// check below is what actually rejects an out-of-root absolute path.
|
|
91
|
+
const candidate = realpathAllowingMissing(path.resolve(realRoot, inputPath ?? ''));
|
|
92
|
+
const rel = path.relative(realRoot, candidate);
|
|
93
|
+
const escapes = rel === '..'
|
|
94
|
+
|| rel.startsWith('..' + path.sep)
|
|
95
|
+
|| path.isAbsolute(rel);
|
|
96
|
+
if (escapes)
|
|
97
|
+
throw new PathJailError(inputPath);
|
|
98
|
+
return candidate;
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=path-jail.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path-jail.js","sourceRoot":"","sources":["../../src/safety/path-jail.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4CA,sCAaC;AAzDD,uCAAyB;AACzB,2CAA6B;AAE7B;;;;;GAKG;AACH,MAAa,aAAc,SAAQ,KAAK;IACV;IAA5B,YAA4B,SAAiB;QAC3C,KAAK,CAAC,kCAAkC,SAAS,EAAE,CAAC,CAAC;QAD3B,cAAS,GAAT,SAAS,CAAQ;QAE3C,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF;AALD,sCAKC;AAED;;;;;;GAMG;AACH,SAAS,uBAAuB,CAAC,CAAS;IACxC,IAAI,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC/B,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAChC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACtC,IAAI,MAAM,KAAK,QAAQ;YAAE,MAAM,CAAC,8BAA8B;QAC9D,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;QACtC,QAAQ,GAAG,MAAM,CAAC;IACpB,CAAC;IACD,IAAI,IAAY,CAAC;IACjB,IAAI,CAAC;QAAC,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IAAC,CAAC;IACzC,MAAM,CAAC;QAAC,IAAI,GAAG,QAAQ,CAAC;IAAC,CAAC;IAC1B,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACvD,CAAC;AAED;;;;;GAKG;AACH,SAAgB,aAAa,CAAC,IAAY,EAAE,SAAiB;IAC3D,MAAM,QAAQ,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC;IAC/C,4EAA4E;IAC5E,qEAAqE;IACrE,MAAM,SAAS,GAAG,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,CAAC;IAEnF,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC/C,MAAM,OAAO,GAAG,GAAG,KAAK,IAAI;WACvB,GAAG,CAAC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC;WAC/B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IAC1B,IAAI,OAAO;QAAE,MAAM,IAAI,aAAa,CAAC,SAAS,CAAC,CAAC;IAEhD,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -1,40 +1,31 @@
|
|
|
1
|
+
import * as readline from 'readline';
|
|
1
2
|
export type PermissionLevel = 'read-only' | 'normal' | 'auto';
|
|
2
3
|
export interface PermissionResult {
|
|
3
4
|
allowed: boolean;
|
|
4
5
|
reason?: string;
|
|
5
6
|
needsConfirm?: boolean;
|
|
6
7
|
}
|
|
7
|
-
export interface PermissionConfig {
|
|
8
|
-
allowedMountPaths?: string[];
|
|
9
|
-
}
|
|
10
|
-
export declare class ShellCommandValidator {
|
|
11
|
-
private blockedPrefixes;
|
|
12
|
-
constructor();
|
|
13
|
-
private discoverFuseMounts;
|
|
14
|
-
validateCommand(cmd: string, projectRoot: string, config?: PermissionConfig): {
|
|
15
|
-
allowed: boolean;
|
|
16
|
-
reason?: string;
|
|
17
|
-
};
|
|
18
|
-
}
|
|
19
8
|
export declare class PermissionSystem {
|
|
20
9
|
private level;
|
|
21
10
|
private sessionApprovals;
|
|
22
|
-
|
|
23
|
-
private projectRoot;
|
|
24
|
-
private config?;
|
|
25
|
-
constructor(level?: PermissionLevel, projectRoot?: string, config?: PermissionConfig);
|
|
11
|
+
constructor(level?: PermissionLevel);
|
|
26
12
|
check(toolName: string, input: Record<string, unknown>): PermissionResult;
|
|
27
13
|
approveForSession(key: string): void;
|
|
14
|
+
/** Current enforcement level. */
|
|
15
|
+
getLevel(): PermissionLevel;
|
|
28
16
|
/**
|
|
29
|
-
* Change the
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
*
|
|
17
|
+
* Change the level at runtime — used by the REPL `:approve` command to flip
|
|
18
|
+
* a session into auto-approve (no per-command confirm) and back. Dangerous
|
|
19
|
+
* commands are STILL blocked in 'auto'; this only removes the y/N prompt for
|
|
20
|
+
* ordinary destructive-but-safe operations.
|
|
33
21
|
*/
|
|
34
22
|
setLevel(level: PermissionLevel): void;
|
|
35
|
-
|
|
23
|
+
private mcpConnectCommand;
|
|
36
24
|
private isDangerous;
|
|
37
25
|
private isSafe;
|
|
38
26
|
}
|
|
27
|
+
export declare function setSharedReadline(rl: readline.Interface | null): void;
|
|
28
|
+
export declare function getSharedReadline(): readline.Interface | null;
|
|
29
|
+
export declare function setConfirmHandler(fn: ((message: string) => Promise<boolean>) | null): void;
|
|
39
30
|
/** Ask user to confirm in the terminal. Returns true if approved. */
|
|
40
31
|
export declare function confirm(message: string): Promise<boolean>;
|