reeboot 1.3.2 → 1.3.4
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/container/entrypoint.sh +55 -3
- package/dist/agent-runner/index.d.ts.map +1 -1
- package/dist/agent-runner/index.js +3 -9
- package/dist/agent-runner/index.js.map +1 -1
- package/dist/agent-runner/pi-runner.d.ts +3 -1
- package/dist/agent-runner/pi-runner.d.ts.map +1 -1
- package/dist/agent-runner/pi-runner.js +81 -7
- package/dist/agent-runner/pi-runner.js.map +1 -1
- package/dist/channels/whatsapp.d.ts.map +1 -1
- package/dist/channels/whatsapp.js +10 -1
- package/dist/channels/whatsapp.js.map +1 -1
- package/dist/config.d.ts +7 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +2 -1
- package/dist/config.js.map +1 -1
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +3 -0
- package/dist/context.js.map +1 -1
- package/dist/db/schema.d.ts.map +1 -1
- package/dist/db/schema.js +2 -2
- package/dist/db/schema.js.map +1 -1
- package/dist/extensions/confirm-destructive.d.ts +9 -0
- package/dist/extensions/confirm-destructive.d.ts.map +1 -0
- package/dist/extensions/confirm-destructive.js +43 -0
- package/dist/extensions/confirm-destructive.js.map +1 -0
- package/dist/extensions/custom-compaction.d.ts +17 -0
- package/dist/extensions/custom-compaction.d.ts.map +1 -0
- package/dist/extensions/custom-compaction.js +99 -0
- package/dist/extensions/custom-compaction.js.map +1 -0
- package/dist/extensions/loader.d.ts.map +1 -1
- package/dist/extensions/loader.js +24 -16
- package/dist/extensions/loader.js.map +1 -1
- package/dist/extensions/protected-paths.d.ts +9 -0
- package/dist/extensions/protected-paths.d.ts.map +1 -0
- package/dist/extensions/protected-paths.js +24 -0
- package/dist/extensions/protected-paths.js.map +1 -0
- package/dist/extensions/scheduler-tool.d.ts +31 -0
- package/dist/extensions/scheduler-tool.d.ts.map +1 -0
- package/dist/extensions/scheduler-tool.js +341 -0
- package/dist/extensions/scheduler-tool.js.map +1 -0
- package/dist/extensions/session-name.d.ts +11 -0
- package/dist/extensions/session-name.d.ts.map +1 -0
- package/dist/extensions/session-name.js +25 -0
- package/dist/extensions/session-name.js.map +1 -0
- package/dist/extensions/skill-manager.d.ts +49 -0
- package/dist/extensions/skill-manager.d.ts.map +1 -0
- package/dist/extensions/skill-manager.js +368 -0
- package/dist/extensions/skill-manager.js.map +1 -0
- package/dist/extensions/token-meter.d.ts +11 -0
- package/dist/extensions/token-meter.d.ts.map +1 -0
- package/dist/extensions/token-meter.js +46 -0
- package/dist/extensions/token-meter.js.map +1 -0
- package/dist/extensions/web-search.d.ts +39 -0
- package/dist/extensions/web-search.d.ts.map +1 -0
- package/dist/extensions/web-search.js +366 -0
- package/dist/extensions/web-search.js.map +1 -0
- package/dist/index.js +9 -2
- package/dist/index.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +3 -3
- package/dist/server.js.map +1 -1
- package/dist/setup-wizard.d.ts +1 -0
- package/dist/setup-wizard.d.ts.map +1 -1
- package/dist/setup-wizard.js +4 -3
- package/dist/setup-wizard.js.map +1 -1
- package/dist/utils/agent-dir.d.ts +11 -0
- package/dist/utils/agent-dir.d.ts.map +1 -0
- package/dist/utils/agent-dir.js +26 -0
- package/dist/utils/agent-dir.js.map +1 -0
- package/dist/wizard/detect-pi-auth.d.ts +19 -0
- package/dist/wizard/detect-pi-auth.d.ts.map +1 -0
- package/dist/wizard/detect-pi-auth.js +36 -0
- package/dist/wizard/detect-pi-auth.js.map +1 -0
- package/dist/wizard/index.d.ts.map +1 -1
- package/dist/wizard/index.js +1 -0
- package/dist/wizard/index.js.map +1 -1
- package/dist/wizard/probe-searxng.d.ts +9 -0
- package/dist/wizard/probe-searxng.d.ts.map +1 -0
- package/dist/wizard/probe-searxng.js +30 -0
- package/dist/wizard/probe-searxng.js.map +1 -0
- package/dist/wizard/steps/channels.js +7 -35
- package/dist/wizard/steps/channels.js.map +1 -1
- package/dist/wizard/steps/launch.d.ts +1 -0
- package/dist/wizard/steps/launch.d.ts.map +1 -1
- package/dist/wizard/steps/launch.js +5 -4
- package/dist/wizard/steps/launch.js.map +1 -1
- package/dist/wizard/steps/provider.d.ts +1 -0
- package/dist/wizard/steps/provider.d.ts.map +1 -1
- package/dist/wizard/steps/provider.js +18 -1
- package/dist/wizard/steps/provider.js.map +1 -1
- package/dist/wizard/steps/web-search.js +33 -10
- package/dist/wizard/steps/web-search.js.map +1 -1
- package/extensions/web-search.ts +2 -3
- package/package.json +4 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"confirm-destructive.js","sourceRoot":"","sources":["../../src/extensions/confirm-destructive.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,MAAM,CAAC,OAAO,WAAW,EAAgB;IACxC,EAAE,CAAC,EAAE,CAAC,uBAAuB,EAAE,KAAK,EAAE,KAA+B,EAAE,GAAG,EAAE,EAAE;QAC7E,IAAI,CAAC,GAAG,CAAC,KAAK;YAAE,OAAO;QAEvB,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;YAC5B,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,OAAO,CACrC,gBAAgB,EAChB,uDAAuD,CACvD,CAAC;YAEF,IAAI,CAAC,SAAS,EAAE,CAAC;gBAChB,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;gBACzC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;YACzB,CAAC;YACD,OAAO;QACR,CAAC;QAED,oGAAoG;QACpG,MAAM,OAAO,GAAG,GAAG,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC;QAChD,MAAM,cAAc,GAAG,OAAO,CAAC,IAAI,CAClC,CAAC,CAAC,EAA4B,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM,CAClF,CAAC;QAEF,IAAI,cAAc,EAAE,CAAC;YACpB,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,OAAO,CACrC,iBAAiB,EACjB,0DAA0D,CAC1D,CAAC;YAEF,IAAI,CAAC,SAAS,EAAE,CAAC;gBAChB,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;gBAC1C,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;YACzB,CAAC;QACF,CAAC;IACF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,EAAE,CAAC,qBAAqB,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QACjD,IAAI,CAAC,GAAG,CAAC,KAAK;YAAE,OAAO;QAEvB,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,mBAAmB,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE;YACnF,kBAAkB;YAClB,6BAA6B;SAC7B,CAAC,CAAC;QAEH,IAAI,MAAM,KAAK,kBAAkB,EAAE,CAAC;YACnC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;YACxC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;QACzB,CAAC;IACF,CAAC,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Custom Compaction Extension
|
|
3
|
+
*
|
|
4
|
+
* Replaces the default compaction behavior with a full summary of the entire context.
|
|
5
|
+
* Instead of keeping the last 20k tokens of conversation turns, this extension:
|
|
6
|
+
* 1. Summarizes ALL messages (messagesToSummarize + turnPrefixMessages)
|
|
7
|
+
* 2. Discards all old turns completely, keeping only the summary
|
|
8
|
+
*
|
|
9
|
+
* This example also demonstrates using a different model (Gemini Flash) for summarization,
|
|
10
|
+
* which can be cheaper/faster than the main conversation model.
|
|
11
|
+
*
|
|
12
|
+
* Usage:
|
|
13
|
+
* pi --extension examples/extensions/custom-compaction.ts
|
|
14
|
+
*/
|
|
15
|
+
import type { ExtensionAPI } from "@mariozechner/pi-coding-agent";
|
|
16
|
+
export default function (pi: ExtensionAPI): void;
|
|
17
|
+
//# sourceMappingURL=custom-compaction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"custom-compaction.d.ts","sourceRoot":"","sources":["../../src/extensions/custom-compaction.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAGlE,MAAM,CAAC,OAAO,WAAW,EAAE,EAAE,YAAY,QA8FxC"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Custom Compaction Extension
|
|
3
|
+
*
|
|
4
|
+
* Replaces the default compaction behavior with a full summary of the entire context.
|
|
5
|
+
* Instead of keeping the last 20k tokens of conversation turns, this extension:
|
|
6
|
+
* 1. Summarizes ALL messages (messagesToSummarize + turnPrefixMessages)
|
|
7
|
+
* 2. Discards all old turns completely, keeping only the summary
|
|
8
|
+
*
|
|
9
|
+
* This example also demonstrates using a different model (Gemini Flash) for summarization,
|
|
10
|
+
* which can be cheaper/faster than the main conversation model.
|
|
11
|
+
*
|
|
12
|
+
* Usage:
|
|
13
|
+
* pi --extension examples/extensions/custom-compaction.ts
|
|
14
|
+
*/
|
|
15
|
+
import { complete } from "@mariozechner/pi-ai";
|
|
16
|
+
import { convertToLlm, serializeConversation } from "@mariozechner/pi-coding-agent";
|
|
17
|
+
export default function (pi) {
|
|
18
|
+
pi.on("session_before_compact", async (event, ctx) => {
|
|
19
|
+
ctx.ui.notify("Custom compaction extension triggered", "info");
|
|
20
|
+
const { preparation, branchEntries: _, signal } = event;
|
|
21
|
+
const { messagesToSummarize, turnPrefixMessages, tokensBefore, firstKeptEntryId, previousSummary } = preparation;
|
|
22
|
+
// Use Gemini Flash for summarization (cheaper/faster than most conversation models)
|
|
23
|
+
const model = ctx.modelRegistry.find("google", "gemini-2.5-flash");
|
|
24
|
+
if (!model) {
|
|
25
|
+
ctx.ui.notify(`Could not find Gemini Flash model, using default compaction`, "warning");
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
// Resolve API key for the summarization model
|
|
29
|
+
const apiKey = await ctx.modelRegistry.getApiKey(model);
|
|
30
|
+
if (!apiKey) {
|
|
31
|
+
ctx.ui.notify(`No API key for ${model.provider}, using default compaction`, "warning");
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
// Combine all messages for full summary
|
|
35
|
+
const allMessages = [...messagesToSummarize, ...turnPrefixMessages];
|
|
36
|
+
ctx.ui.notify(`Custom compaction: summarizing ${allMessages.length} messages (${tokensBefore.toLocaleString()} tokens) with ${model.id}...`, "info");
|
|
37
|
+
// Convert messages to readable text format
|
|
38
|
+
const conversationText = serializeConversation(convertToLlm(allMessages));
|
|
39
|
+
// Include previous summary context if available
|
|
40
|
+
const previousContext = previousSummary ? `\n\nPrevious session summary for context:\n${previousSummary}` : "";
|
|
41
|
+
// Build messages that ask for a comprehensive summary
|
|
42
|
+
const summaryMessages = [
|
|
43
|
+
{
|
|
44
|
+
role: "user",
|
|
45
|
+
content: [
|
|
46
|
+
{
|
|
47
|
+
type: "text",
|
|
48
|
+
text: `You are a conversation summarizer. Create a comprehensive summary of this conversation that captures:${previousContext}
|
|
49
|
+
|
|
50
|
+
1. The main goals and objectives discussed
|
|
51
|
+
2. Key decisions made and their rationale
|
|
52
|
+
3. Important code changes, file modifications, or technical details
|
|
53
|
+
4. Current state of any ongoing work
|
|
54
|
+
5. Any blockers, issues, or open questions
|
|
55
|
+
6. Next steps that were planned or suggested
|
|
56
|
+
|
|
57
|
+
Be thorough but concise. The summary will replace the ENTIRE conversation history, so include all information needed to continue the work effectively.
|
|
58
|
+
|
|
59
|
+
Format the summary as structured markdown with clear sections.
|
|
60
|
+
|
|
61
|
+
<conversation>
|
|
62
|
+
${conversationText}
|
|
63
|
+
</conversation>`,
|
|
64
|
+
},
|
|
65
|
+
],
|
|
66
|
+
timestamp: Date.now(),
|
|
67
|
+
},
|
|
68
|
+
];
|
|
69
|
+
try {
|
|
70
|
+
// Pass signal to honor abort requests (e.g., user cancels compaction)
|
|
71
|
+
const response = await complete(model, { messages: summaryMessages }, { apiKey, maxTokens: 8192, signal });
|
|
72
|
+
const summary = response.content
|
|
73
|
+
.filter((c) => c.type === "text")
|
|
74
|
+
.map((c) => c.text)
|
|
75
|
+
.join("\n");
|
|
76
|
+
if (!summary.trim()) {
|
|
77
|
+
if (!signal.aborted)
|
|
78
|
+
ctx.ui.notify("Compaction summary was empty, using default compaction", "warning");
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
// Return compaction content - SessionManager adds id/parentId
|
|
82
|
+
// Use firstKeptEntryId from preparation to keep recent messages
|
|
83
|
+
return {
|
|
84
|
+
compaction: {
|
|
85
|
+
summary,
|
|
86
|
+
firstKeptEntryId,
|
|
87
|
+
tokensBefore,
|
|
88
|
+
},
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
catch (error) {
|
|
92
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
93
|
+
ctx.ui.notify(`Compaction failed: ${message}`, "error");
|
|
94
|
+
// Fall back to default compaction on error
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=custom-compaction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"custom-compaction.js","sourceRoot":"","sources":["../../src/extensions/custom-compaction.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/extensions/loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAyB,KAAK,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC3F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAItE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/extensions/loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAyB,KAAK,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC3F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAItE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAiBlE,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,EAAE,CA0GtE;AAID,wBAAgB,YAAY,CAAC,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,GAAG,cAAc,CAkBnF"}
|
|
@@ -15,10 +15,13 @@ import { homedir } from 'os';
|
|
|
15
15
|
import { join, dirname, resolve } from 'path';
|
|
16
16
|
import { fileURLToPath } from 'url';
|
|
17
17
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
18
|
-
// Resolve the extensions/ and skills/ directories at the reeboot package root
|
|
19
|
-
//
|
|
18
|
+
// Resolve the extensions/ and skills/ directories at the reeboot package root.
|
|
19
|
+
// __dirname is dist/extensions/ (compiled output location).
|
|
20
|
+
// All bundled extensions are compiled to dist/extensions/*.js via the main tsc.
|
|
21
|
+
// In vitest (source mode), __dirname = src/extensions/ so .js files don't exist —
|
|
22
|
+
// importExt() falls back to .ts for that case.
|
|
20
23
|
const PACKAGE_ROOT = resolve(__dirname, '../../');
|
|
21
|
-
const BUNDLED_EXTENSIONS_DIR = join(
|
|
24
|
+
const BUNDLED_EXTENSIONS_DIR = join(__dirname);
|
|
22
25
|
const BUNDLED_SKILLS_DIR = join(PACKAGE_ROOT, 'skills');
|
|
23
26
|
// ─── getBundledFactories ─────────────────────────────────────────────────────
|
|
24
27
|
// Returns the list of bundled ExtensionFactory functions based on config toggles.
|
|
@@ -43,7 +46,7 @@ export function getBundledFactories(config) {
|
|
|
43
46
|
if (sandboxEnabled) {
|
|
44
47
|
factories.push((pi) => {
|
|
45
48
|
// Lazy-load so missing deps don't break startup in CI / test
|
|
46
|
-
const sandboxPath = join(
|
|
49
|
+
const sandboxPath = join(PACKAGE_ROOT, 'extensions', 'sandbox', 'index.ts');
|
|
47
50
|
try {
|
|
48
51
|
// Extensions are loaded by DefaultResourceLoader as file paths; we register
|
|
49
52
|
// a no-op factory here and let the loader discover the file-based extension.
|
|
@@ -54,65 +57,70 @@ export function getBundledFactories(config) {
|
|
|
54
57
|
}
|
|
55
58
|
// Simple file-based extensions registered as inline factories for reliability.
|
|
56
59
|
// We use dynamic import factories so TypeScript strict mode is satisfied.
|
|
60
|
+
// Helper: try compiled .js first (production dist/extensions/),
|
|
61
|
+
// fall back to .ts (vitest runs from src/extensions/ without compilation)
|
|
62
|
+
const importExt = (name) => import(join(BUNDLED_EXTENSIONS_DIR, `${name}.js`))
|
|
63
|
+
.catch(() => import(join(BUNDLED_EXTENSIONS_DIR, `${name}.ts`)))
|
|
64
|
+
.catch(() => null);
|
|
57
65
|
if (confirmEnabled) {
|
|
58
66
|
factories.push(async (pi) => {
|
|
59
|
-
const mod = await
|
|
67
|
+
const mod = await importExt('confirm-destructive');
|
|
60
68
|
if (mod?.default)
|
|
61
69
|
mod.default(pi);
|
|
62
70
|
});
|
|
63
71
|
}
|
|
64
72
|
if (protectedEnabled) {
|
|
65
73
|
factories.push(async (pi) => {
|
|
66
|
-
const mod = await
|
|
74
|
+
const mod = await importExt('protected-paths');
|
|
67
75
|
if (mod?.default)
|
|
68
76
|
mod.default(pi);
|
|
69
77
|
});
|
|
70
78
|
}
|
|
71
79
|
if (sessionNameEnabled) {
|
|
72
80
|
factories.push(async (pi) => {
|
|
73
|
-
const mod = await
|
|
81
|
+
const mod = await importExt('session-name');
|
|
74
82
|
if (mod?.default)
|
|
75
83
|
mod.default(pi);
|
|
76
84
|
});
|
|
77
85
|
}
|
|
78
86
|
if (compactionEnabled) {
|
|
79
87
|
factories.push(async (pi) => {
|
|
80
|
-
const mod = await
|
|
88
|
+
const mod = await importExt('custom-compaction');
|
|
81
89
|
if (mod?.default)
|
|
82
90
|
mod.default(pi);
|
|
83
91
|
});
|
|
84
92
|
}
|
|
85
93
|
if (gitCheckpointEnabled) {
|
|
86
94
|
factories.push(async (pi) => {
|
|
87
|
-
const mod = await
|
|
95
|
+
const mod = await importExt('git-checkpoint');
|
|
88
96
|
if (mod?.default)
|
|
89
97
|
mod.default(pi);
|
|
90
98
|
});
|
|
91
99
|
}
|
|
92
100
|
if (schedulerEnabled) {
|
|
93
101
|
factories.push(async (pi) => {
|
|
94
|
-
const mod = await
|
|
102
|
+
const mod = await importExt('scheduler-tool');
|
|
95
103
|
if (mod?.default)
|
|
96
104
|
mod.default(pi);
|
|
97
105
|
});
|
|
98
106
|
}
|
|
99
107
|
if (tokenMeterEnabled) {
|
|
100
108
|
factories.push(async (pi) => {
|
|
101
|
-
const mod = await
|
|
109
|
+
const mod = await importExt('token-meter');
|
|
102
110
|
if (mod?.default)
|
|
103
111
|
mod.default(pi);
|
|
104
112
|
});
|
|
105
113
|
}
|
|
106
114
|
if (webSearchEnabled) {
|
|
107
115
|
factories.push(async (pi) => {
|
|
108
|
-
const mod = await
|
|
116
|
+
const mod = await importExt('web-search');
|
|
109
117
|
if (mod?.default)
|
|
110
|
-
await mod.default(pi);
|
|
118
|
+
await mod.default(pi, config);
|
|
111
119
|
});
|
|
112
120
|
}
|
|
113
121
|
if (skillManagerEnabled) {
|
|
114
122
|
factories.push(async (pi) => {
|
|
115
|
-
const mod = await
|
|
123
|
+
const mod = await importExt('skill-manager');
|
|
116
124
|
if (mod?.default)
|
|
117
125
|
await mod.default(pi, config);
|
|
118
126
|
});
|
|
@@ -121,13 +129,13 @@ export function getBundledFactories(config) {
|
|
|
121
129
|
}
|
|
122
130
|
// ─── createLoader ─────────────────────────────────────────────────────────────
|
|
123
131
|
export function createLoader(context, config) {
|
|
124
|
-
const agentDir = join(homedir(), '.reeboot');
|
|
132
|
+
const agentDir = join(homedir(), '.reeboot', 'agent');
|
|
125
133
|
const extensionFactories = getBundledFactories(config);
|
|
126
134
|
// For sandbox, use additionalExtensionPaths so DefaultResourceLoader handles it
|
|
127
135
|
const additionalExtensionPaths = [];
|
|
128
136
|
const core = config?.extensions?.core ?? {};
|
|
129
137
|
if (core.sandbox ?? true) {
|
|
130
|
-
additionalExtensionPaths.push(join(
|
|
138
|
+
additionalExtensionPaths.push(join(PACKAGE_ROOT, 'extensions', 'sandbox', 'index.ts'));
|
|
131
139
|
}
|
|
132
140
|
return new DefaultResourceLoader({
|
|
133
141
|
cwd: context.workspacePath,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/extensions/loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,qBAAqB,EAAuB,MAAM,+BAA+B,CAAC;AAE3F,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAIpC,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE1D,
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/extensions/loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Protected Paths Extension
|
|
3
|
+
*
|
|
4
|
+
* Blocks write and edit operations to protected paths.
|
|
5
|
+
* Useful for preventing accidental modifications to sensitive files.
|
|
6
|
+
*/
|
|
7
|
+
import type { ExtensionAPI } from "@mariozechner/pi-coding-agent";
|
|
8
|
+
export default function (pi: ExtensionAPI): void;
|
|
9
|
+
//# sourceMappingURL=protected-paths.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protected-paths.d.ts","sourceRoot":"","sources":["../../src/extensions/protected-paths.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAElE,MAAM,CAAC,OAAO,WAAW,EAAE,EAAE,YAAY,QAoBxC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Protected Paths Extension
|
|
3
|
+
*
|
|
4
|
+
* Blocks write and edit operations to protected paths.
|
|
5
|
+
* Useful for preventing accidental modifications to sensitive files.
|
|
6
|
+
*/
|
|
7
|
+
export default function (pi) {
|
|
8
|
+
const protectedPaths = [".env", ".git/", "node_modules/"];
|
|
9
|
+
pi.on("tool_call", async (event, ctx) => {
|
|
10
|
+
if (event.toolName !== "write" && event.toolName !== "edit") {
|
|
11
|
+
return undefined;
|
|
12
|
+
}
|
|
13
|
+
const path = event.input.path;
|
|
14
|
+
const isProtected = protectedPaths.some((p) => path.includes(p));
|
|
15
|
+
if (isProtected) {
|
|
16
|
+
if (ctx.hasUI) {
|
|
17
|
+
ctx.ui.notify(`Blocked write to protected path: ${path}`, "warning");
|
|
18
|
+
}
|
|
19
|
+
return { block: true, reason: `Path "${path}" is protected` };
|
|
20
|
+
}
|
|
21
|
+
return undefined;
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=protected-paths.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protected-paths.js","sourceRoot":"","sources":["../../src/extensions/protected-paths.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,MAAM,CAAC,OAAO,WAAW,EAAgB;IACxC,MAAM,cAAc,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC;IAE1D,EAAE,CAAC,EAAE,CAAC,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QACvC,IAAI,KAAK,CAAC,QAAQ,KAAK,OAAO,IAAI,KAAK,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;YAC7D,OAAO,SAAS,CAAC;QAClB,CAAC;QAED,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,IAAc,CAAC;QACxC,MAAM,WAAW,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAEjE,IAAI,WAAW,EAAE,CAAC;YACjB,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;gBACf,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,oCAAoC,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC;YACtE,CAAC;YACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,IAAI,gBAAgB,EAAE,CAAC;QAC/D,CAAC;QAED,OAAO,SAAS,CAAC;IAClB,CAAC,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scheduler Tool Extension
|
|
3
|
+
*
|
|
4
|
+
* Registers schedule_task, list_tasks, cancel_task, pause_task, resume_task,
|
|
5
|
+
* update_task tools backed by SQLite, plus the /tasks slash command.
|
|
6
|
+
* Uses getDb() for DB access and integrates with the Scheduler singleton.
|
|
7
|
+
*
|
|
8
|
+
* Also registers:
|
|
9
|
+
* - timer: one-shot non-blocking wait (fires pi.sendMessage triggerTurn)
|
|
10
|
+
* - heartbeat: periodic non-blocking wake-up (start/stop/status)
|
|
11
|
+
* - bash pre-hook: sleep interceptor (blocks sleep when sole/last command)
|
|
12
|
+
* - session_shutdown: cleans up all in-session timers and heartbeat
|
|
13
|
+
*/
|
|
14
|
+
import type { ExtensionAPI } from '@mariozechner/pi-coding-agent';
|
|
15
|
+
/**
|
|
16
|
+
* Returns true if sleep is the sole command or the last command in a chain.
|
|
17
|
+
* Splits on && and single | (not || which is OR-fallback).
|
|
18
|
+
*/
|
|
19
|
+
export declare function isSleepOnlyOrLast(command: string): boolean;
|
|
20
|
+
export declare class TimerManager {
|
|
21
|
+
private _timers;
|
|
22
|
+
private _heartbeat;
|
|
23
|
+
setTimer(pi: ExtensionAPI, seconds: number, message: string, id: string): void;
|
|
24
|
+
cancelTimer(id: string): void;
|
|
25
|
+
startHeartbeat(pi: ExtensionAPI, intervalSeconds: number, message: string): void;
|
|
26
|
+
stopHeartbeat(): void;
|
|
27
|
+
getHeartbeatStatus(): string;
|
|
28
|
+
clearAll(): void;
|
|
29
|
+
}
|
|
30
|
+
export default function (pi: ExtensionAPI): void;
|
|
31
|
+
//# sourceMappingURL=scheduler-tool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scheduler-tool.d.ts","sourceRoot":"","sources":["../../src/extensions/scheduler-tool.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;GAYG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAIlE;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAM1D;AAID,qBAAa,YAAY;IACvB,OAAO,CAAC,OAAO,CAAoD;IACnE,OAAO,CAAC,UAAU,CAMF;IAIhB,QAAQ,CAAC,EAAE,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;IAoB9E,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAU7B,cAAc,CAAC,EAAE,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IA6BhF,aAAa,IAAI,IAAI;IAOrB,kBAAkB,IAAI,MAAM;IAQ5B,QAAQ,IAAI,IAAI;CAKjB;AAID,MAAM,CAAC,OAAO,WAAW,EAAE,EAAE,YAAY,QAgSxC"}
|