0xkobold 0.6.10 → 0.7.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/README.md +48 -23
- package/dist/package.json +6 -5
- package/dist/src/cli/extensions/env.js +175 -14
- package/dist/src/cli/extensions/env.js.map +1 -1
- package/dist/src/extensions/community/pi-ollama-wrapper.js +27 -0
- package/dist/src/extensions/community/pi-ollama-wrapper.js.map +1 -0
- package/dist/src/extensions/core/agent-orchestrator-extension.js +160 -43
- package/dist/src/extensions/core/agent-orchestrator-extension.js.map +1 -1
- package/dist/src/extensions/core/cloudflare-browser-extension.js +389 -0
- package/dist/src/extensions/core/cloudflare-browser-extension.js.map +1 -0
- package/dist/src/extensions/core/draconic-extension-loader.js +144 -0
- package/dist/src/extensions/core/draconic-extension-loader.js.map +1 -0
- package/dist/src/extensions/core/intelligent-context-extension.js +196 -0
- package/dist/src/extensions/core/intelligent-context-extension.js.map +1 -0
- package/dist/src/extensions/core/obsidian-bridge-extension.js +488 -0
- package/dist/src/extensions/core/obsidian-bridge-extension.js.map +1 -0
- package/dist/src/gateway/discord-bot.js +4 -4
- package/dist/src/gateway/discord-bot.js.map +1 -1
- package/dist/src/index.js +2 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/llm/ollama.js +26 -1
- package/dist/src/llm/ollama.js.map +1 -1
- package/dist/src/pi-config.js +18 -2
- package/dist/src/pi-config.js.map +1 -1
- package/dist/src/utils/redact.js +212 -0
- package/dist/src/utils/redact.js.map +1 -0
- package/package.json +6 -5
- package/skills/cloudflare-research.ts +345 -0
- package/dist/src/extensions/core/context-pruning/extension.js +0 -124
- package/dist/src/extensions/core/context-pruning/extension.js.map +0 -1
- package/dist/src/extensions/core/context-pruning/pruner.js +0 -312
- package/dist/src/extensions/core/context-pruning/pruner.js.map +0 -1
- package/dist/src/extensions/core/context-pruning/runtime.js +0 -48
- package/dist/src/extensions/core/context-pruning/runtime.js.map +0 -1
- package/dist/src/extensions/core/context-pruning/settings.js +0 -105
- package/dist/src/extensions/core/context-pruning/settings.js.map +0 -1
- package/dist/src/extensions/core/ollama-extension.js +0 -442
- package/dist/src/extensions/core/ollama-extension.js.map +0 -1
- package/dist/src/gateway/server.js +0 -325
- package/dist/src/gateway/server.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,24 +1,4 @@
|
|
|
1
|
-
# 0xKobold
|
|
2
|
-
|
|
3
|
-
**v0.6.10** — Gateway auto-starts by default for TUI (detects existing)
|
|
4
|
-
|
|
5
|
-
**v0.6.9** — Fix gateway detection when dev already running
|
|
6
|
-
|
|
7
|
-
**v0.6.8** — Add /lair-sync command to bridge local/global context
|
|
8
|
-
|
|
9
|
-
**v0.6.7** — Auto-detect and notify about project lairs in local mode
|
|
10
|
-
|
|
11
|
-
**v0.6.6** — Enforce global workspace sandboxing, proper CWD isolation
|
|
12
|
-
|
|
13
|
-
**v0.6.5** — Clean dist/ before build, removes ghost extensions
|
|
14
|
-
|
|
15
|
-
**v0.6.4** — Fix workspace detection from home directory
|
|
16
|
-
|
|
17
|
-
**v0.6.3** — Workspace-aware footer, cleaner gateway display
|
|
18
|
-
|
|
19
|
-
**v0.6.2** — Gateway auto-start opt-in (fixes port conflicts)
|
|
20
|
-
|
|
21
|
-
**v0.6.0 "Koclaw Gateway"** — JSON-RPC gateway, session persistence, multi-channel
|
|
1
|
+
# 0xKobold
|
|
22
2
|
|
|
23
3
|
```
|
|
24
4
|
..
|
|
@@ -56,7 +36,19 @@
|
|
|
56
36
|
|
|
57
37
|
> *"Your digital familiar - a personal AI assistant that connects, persists, and evolves"*
|
|
58
38
|
|
|
59
|
-
|
|
39
|
+
## 🔥 Latest: v0.6.11 "Secret Guardian"
|
|
40
|
+
|
|
41
|
+
**v0.6.11** — Automatic secret redaction in env commands, README restructure
|
|
42
|
+
**v0.6.10** — Gateway auto-starts by default for TUI (detects existing)
|
|
43
|
+
**v0.6.9** — Fix gateway detection when dev already running
|
|
44
|
+
**v0.6.8** — Add /lair-sync command to bridge local/global context
|
|
45
|
+
**v0.6.7** — Auto-detect and notify about project lairs in local mode
|
|
46
|
+
**v0.6.6** — Enforce global workspace sandboxing, proper CWD isolation
|
|
47
|
+
**v0.6.5** — Clean dist/ before build, removes ghost extensions
|
|
48
|
+
**v0.6.4** — Fix workspace detection from home directory
|
|
49
|
+
**v0.6.3** — Workspace-aware footer, cleaner gateway display
|
|
50
|
+
**v0.6.2** — Gateway auto-start opt-in (fixes port conflicts)
|
|
51
|
+
**v0.6.0** — JSON-RPC gateway, session persistence, multi-channel
|
|
60
52
|
|
|
61
53
|
> **New in v0.6.0:** Koclaw Gateway (JSON-RPC), Session Management, Auth Profiles, Session Resume
|
|
62
54
|
> **From v0.5.0:** Generative Agents, Semantic Memory, Multi-agent Orchestration
|
|
@@ -244,6 +236,28 @@ recall "what was the database decision"
|
|
|
244
236
|
|
|
245
237
|
---
|
|
246
238
|
|
|
239
|
+
## Secret Management 🔐
|
|
240
|
+
|
|
241
|
+
Environment variables with automatic redaction:
|
|
242
|
+
|
|
243
|
+
```bash
|
|
244
|
+
# Show env vars (secrets automatically redacted)
|
|
245
|
+
0xkobold env show
|
|
246
|
+
|
|
247
|
+
# Show with secrets revealed (careful!)
|
|
248
|
+
0xkobold env show --show-secrets
|
|
249
|
+
|
|
250
|
+
# Show entire .env file (redacted)
|
|
251
|
+
0xkobold env show --file
|
|
252
|
+
|
|
253
|
+
# Check status
|
|
254
|
+
0xkobold env status
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
**Auto-redacted:** TOKEN, KEY, SECRET, PASSWORD, API_KEY, WEBHOOK_URL, and token-like values
|
|
258
|
+
|
|
259
|
+
---
|
|
260
|
+
|
|
247
261
|
## Skills System 🔧
|
|
248
262
|
|
|
249
263
|
Create custom capabilities without restarting:
|
|
@@ -332,6 +346,14 @@ bun run init # Initialize workspace
|
|
|
332
346
|
0xkobold gateway health
|
|
333
347
|
```
|
|
334
348
|
|
|
349
|
+
### Environment
|
|
350
|
+
```bash
|
|
351
|
+
0xkobold env status # Check environment status
|
|
352
|
+
0xkobold env show # Show env vars (redacted)
|
|
353
|
+
0xkobold env show --show-secrets # Show with secrets visible
|
|
354
|
+
0xkobold env show --file # Show .env file contents
|
|
355
|
+
```
|
|
356
|
+
|
|
335
357
|
---
|
|
336
358
|
|
|
337
359
|
## Configuration
|
|
@@ -408,6 +430,7 @@ eventBus.on('agent.spawned', handler);
|
|
|
408
430
|
| `src/skills/` | Hot-reload skill system |
|
|
409
431
|
| `src/tui/` | Terminal UI (React-based) |
|
|
410
432
|
| `src/event-bus/` | Decoupled event system |
|
|
433
|
+
| `src/cli/extensions/env.ts` | Secret management with auto-redaction |
|
|
411
434
|
|
|
412
435
|
---
|
|
413
436
|
|
|
@@ -455,7 +478,7 @@ bun test --coverage
|
|
|
455
478
|
│ │ ├── builtin/ # Built-in skills
|
|
456
479
|
│ │ └── loader.ts # Hot-reload logic
|
|
457
480
|
│ ├── tui/ # Terminal UI
|
|
458
|
-
│ └── utils/ # Utilities (nl-patterns.ts)
|
|
481
|
+
│ └── utils/ # Utilities (nl-patterns.ts, redact.ts)
|
|
459
482
|
├── skills/ # Your custom skills (hot-reloaded)
|
|
460
483
|
├── test/ # Test suites
|
|
461
484
|
│ ├── unit/
|
|
@@ -482,6 +505,8 @@ bun test --coverage
|
|
|
482
505
|
- `src/agent/auth-profiles.ts` - Auth profile management
|
|
483
506
|
- `src/extensions/core/generative-agents-extension.ts` - Generative agents
|
|
484
507
|
- `src/utils/nl-patterns.ts` - Natural language parsing
|
|
508
|
+
- `src/utils/redact.ts` - Secret redaction utilities
|
|
509
|
+
- `src/cli/extensions/env.ts` - Environment & secrets management
|
|
485
510
|
- `~/.0xkobold/config.json` - User configuration
|
|
486
511
|
- `~/.0xkobold/memory/perennial/knowledge.db` - Semantic memory
|
|
487
512
|
- `CLAUDE.md` - AI assistant context
|
package/dist/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "0xkobold",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.0",
|
|
4
4
|
"description": "Your digital familiar - Koclaw-style gateway, session management, and multi-agent orchestration",
|
|
5
5
|
"main": "dist/src/index.js",
|
|
6
6
|
"types": "dist/src/index.d.ts",
|
|
@@ -43,6 +43,7 @@
|
|
|
43
43
|
"author": "0xKobold Team",
|
|
44
44
|
"license": "MIT",
|
|
45
45
|
"dependencies": {
|
|
46
|
+
"@0xkobold/pi-ollama": "0.1.7",
|
|
46
47
|
"@aliou/pi-processes": "^0.6.2",
|
|
47
48
|
"@mariozechner/pi-agent-core": "0.57.1",
|
|
48
49
|
"@mariozechner/pi-coding-agent": "0.57.1",
|
|
@@ -56,12 +57,12 @@
|
|
|
56
57
|
"json5": "^2.2.3",
|
|
57
58
|
"node-machine-id": "^1.1.12",
|
|
58
59
|
"node-telegram-bot-api": "^0.67.0",
|
|
59
|
-
"pi-extmgr": "^0.1.
|
|
60
|
+
"pi-extmgr": "^0.1.25",
|
|
60
61
|
"pi-librarian": "^1.3.0",
|
|
61
62
|
"pi-memory-md": "^0.1.1",
|
|
62
63
|
"pi-messenger": "^0.13.0",
|
|
63
|
-
"pi-subagents": "^0.11.
|
|
64
|
-
"pi-web-access": "^0.10.
|
|
64
|
+
"pi-subagents": "^0.11.2",
|
|
65
|
+
"pi-web-access": "^0.10.3",
|
|
65
66
|
"playwright": "^1.58.2",
|
|
66
67
|
"react": "^19.2.4",
|
|
67
68
|
"sharp": "^0.33.5",
|
|
@@ -71,7 +72,7 @@
|
|
|
71
72
|
"@types/blessed": "^0.1.27",
|
|
72
73
|
"@types/bun": "latest",
|
|
73
74
|
"@types/json5": "^2.2.0",
|
|
74
|
-
"@types/node": "^20.19.
|
|
75
|
+
"@types/node": "^20.19.37",
|
|
75
76
|
"bun-types": "latest",
|
|
76
77
|
"typescript": "^5.9.3"
|
|
77
78
|
},
|
|
@@ -2,11 +2,124 @@
|
|
|
2
2
|
* Environment CLI Extension
|
|
3
3
|
*
|
|
4
4
|
* Registers Environment subcommands under 0xkobold CLI
|
|
5
|
+
*
|
|
6
|
+
* Secret Redaction:
|
|
7
|
+
* - Automatically detects secret keys ( TOKEN, KEY, SECRET, PASSWORD, etc.)
|
|
8
|
+
* - Masks values like "sk-abc123***xyz" (shows first/last 4 chars only)
|
|
9
|
+
* - Use --show-secrets flag to reveal actual values
|
|
5
10
|
*/
|
|
6
|
-
import { existsSync } from "fs";
|
|
11
|
+
import { existsSync, readFileSync } from "fs";
|
|
7
12
|
import { homedir } from "os";
|
|
8
13
|
import { join } from "path";
|
|
9
14
|
const CONFIG_DIR = join(homedir(), ".0xkobold", "config");
|
|
15
|
+
/** Patterns that indicate a secret key */
|
|
16
|
+
const SECRET_KEY_PATTERNS = [
|
|
17
|
+
/token/i,
|
|
18
|
+
/password/i,
|
|
19
|
+
/secret/i,
|
|
20
|
+
/api[_-]?key/i,
|
|
21
|
+
/auth/i,
|
|
22
|
+
/credential/i,
|
|
23
|
+
/private/i,
|
|
24
|
+
/webhook[_-]?url/i,
|
|
25
|
+
];
|
|
26
|
+
/** Environment variable names that are known secrets */
|
|
27
|
+
const SECRET_ENV_NAMES = [
|
|
28
|
+
'DISCORD_BOT_TOKEN',
|
|
29
|
+
'TELEGRAM_BOT_TOKEN',
|
|
30
|
+
'ANTHROPIC_API_KEY',
|
|
31
|
+
'OPENAI_API_KEY',
|
|
32
|
+
'LLM_API_KEY',
|
|
33
|
+
'KOBOLD_REMOTE_TOKEN',
|
|
34
|
+
'KOBOLD_API_KEY',
|
|
35
|
+
'SOPS_AGE_KEY',
|
|
36
|
+
'AWS_ACCESS_KEY_ID',
|
|
37
|
+
'AWS_SECRET_ACCESS_KEY',
|
|
38
|
+
'GITHUB_TOKEN',
|
|
39
|
+
'GITLAB_TOKEN',
|
|
40
|
+
'SLACK_TOKEN',
|
|
41
|
+
'STRIPE_SECRET_KEY',
|
|
42
|
+
'JWT_SECRET',
|
|
43
|
+
'SESSION_SECRET',
|
|
44
|
+
'COOKIE_SECRET',
|
|
45
|
+
];
|
|
46
|
+
/**
|
|
47
|
+
* Check if a key looks like it could be a secret
|
|
48
|
+
*/
|
|
49
|
+
function isSecretKey(key) {
|
|
50
|
+
return SECRET_KEY_PATTERNS.some(pattern => pattern.test(key));
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Check if an environment variable name is a known secret
|
|
54
|
+
*/
|
|
55
|
+
function isSecretEnvVar(name) {
|
|
56
|
+
return SECRET_ENV_NAMES.some(secret => name.toUpperCase() === secret ||
|
|
57
|
+
name.toUpperCase().startsWith(secret + '_'));
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Redact a secret value, showing only first/last 4 chars
|
|
61
|
+
* e.g., "sk-abc123***xyz" -> "sk-a************xyz"
|
|
62
|
+
*/
|
|
63
|
+
function redactValue(value, visibleChars = 4) {
|
|
64
|
+
if (!value || value.length <= visibleChars * 2) {
|
|
65
|
+
return '<redacted>';
|
|
66
|
+
}
|
|
67
|
+
const start = value.slice(0, visibleChars);
|
|
68
|
+
const end = value.slice(-visibleChars);
|
|
69
|
+
const middleLength = value.length - (visibleChars * 2);
|
|
70
|
+
return `${start}${'•'.repeat(Math.min(middleLength, 8))}${end}`;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Check if a value looks like a token/key
|
|
74
|
+
*/
|
|
75
|
+
function looksLikeToken(value) {
|
|
76
|
+
const tokenPatterns = [
|
|
77
|
+
/^sk-/, /^pk_/, /^sk_/, /^ghp_/, /^gho_/, /^xoxb-/, /^xoxp-/, /^bot/,
|
|
78
|
+
/^eyJ/, /^Bearer /, /^Basic /,
|
|
79
|
+
/[a-f0-9]{32,}/i, // Hex tokens
|
|
80
|
+
];
|
|
81
|
+
return value.length > 20 && tokenPatterns.some(p => p.test(value));
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Format an env var value with optional redaction
|
|
85
|
+
*/
|
|
86
|
+
function formatEnvValue(key, value, showSecrets) {
|
|
87
|
+
if (!value)
|
|
88
|
+
return '<not set>';
|
|
89
|
+
if (showSecrets)
|
|
90
|
+
return value;
|
|
91
|
+
// Check if this is a secret
|
|
92
|
+
const isSecret = isSecretKey(key) || isSecretEnvVar(key) || looksLikeToken(value);
|
|
93
|
+
if (isSecret) {
|
|
94
|
+
return redactValue(value, 4);
|
|
95
|
+
}
|
|
96
|
+
return value;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Redact secrets in .env file content
|
|
100
|
+
*/
|
|
101
|
+
function redactEnvFile(content, showSecrets) {
|
|
102
|
+
if (showSecrets)
|
|
103
|
+
return content;
|
|
104
|
+
return content.split('\n').map(line => {
|
|
105
|
+
// Skip comments and empty lines
|
|
106
|
+
if (!line.trim() || line.startsWith('#'))
|
|
107
|
+
return line;
|
|
108
|
+
// Match KEY=VALUE patterns
|
|
109
|
+
const match = line.match(/^([A-Za-z_][A-Za-z0-9_]*)=(.*)$/);
|
|
110
|
+
if (!match)
|
|
111
|
+
return line;
|
|
112
|
+
const [, key, rawValue] = match;
|
|
113
|
+
// Strip quotes if present
|
|
114
|
+
const value = rawValue.replace(/^["']|["']$/g, '');
|
|
115
|
+
// Check if this is a secret
|
|
116
|
+
const isSecret = isSecretKey(key) || isSecretEnvVar(key);
|
|
117
|
+
if (isSecret && value) {
|
|
118
|
+
return `${key}=${redactValue(value, 4)}`;
|
|
119
|
+
}
|
|
120
|
+
return line;
|
|
121
|
+
}).join('\n');
|
|
122
|
+
}
|
|
10
123
|
export function registerEnvCli(program) {
|
|
11
124
|
const env = program
|
|
12
125
|
.command("env")
|
|
@@ -14,7 +127,8 @@ export function registerEnvCli(program) {
|
|
|
14
127
|
env
|
|
15
128
|
.command("status")
|
|
16
129
|
.description("Show environment status")
|
|
17
|
-
.
|
|
130
|
+
.option("--show-secrets", "Reveal secret values (careful!)")
|
|
131
|
+
.action(async (opts) => {
|
|
18
132
|
console.log("📁 Environment Status");
|
|
19
133
|
console.log("═════════════════════\n");
|
|
20
134
|
// Check config directory
|
|
@@ -33,9 +147,18 @@ export function registerEnvCli(program) {
|
|
|
33
147
|
const vars = ["DISCORD_BOT_TOKEN", "DISCORD_NOTIFY_CHANNEL_ID", "NODE_ENV"];
|
|
34
148
|
vars.forEach(v => {
|
|
35
149
|
const set = !!process.env[v];
|
|
36
|
-
|
|
150
|
+
const displayValue = process.env[v]
|
|
151
|
+
? formatEnvValue(v, process.env[v], opts.showSecrets)
|
|
152
|
+
: null;
|
|
153
|
+
const status = set
|
|
154
|
+
? (opts.showSecrets ? `=${displayValue}` : `: ${displayValue}`)
|
|
155
|
+
: " (not set)";
|
|
156
|
+
console.log(` ${set ? "✅" : "❌"} ${v}${status}`);
|
|
37
157
|
});
|
|
38
|
-
|
|
158
|
+
if (!opts.showSecrets) {
|
|
159
|
+
console.log("\n🛡️ Secrets are redacted. Use --show-secrets to reveal (careful!)");
|
|
160
|
+
}
|
|
161
|
+
// Check Discord token status
|
|
39
162
|
if (process.env.DISCORD_BOT_TOKEN) {
|
|
40
163
|
console.log("\n🟢 Discord: Configured");
|
|
41
164
|
}
|
|
@@ -45,25 +168,63 @@ export function registerEnvCli(program) {
|
|
|
45
168
|
});
|
|
46
169
|
env
|
|
47
170
|
.command("show")
|
|
48
|
-
.description("Show environment variables (
|
|
49
|
-
.
|
|
50
|
-
|
|
171
|
+
.description("Show environment variables (secrets redacted by default)")
|
|
172
|
+
.option("--show-secrets", "Reveal secret values (careful!)")
|
|
173
|
+
.option("--file", "Show entire .env file content")
|
|
174
|
+
.action(async (opts) => {
|
|
175
|
+
if (opts.file) {
|
|
176
|
+
const envPath = join(CONFIG_DIR, ".env");
|
|
177
|
+
if (!existsSync(envPath)) {
|
|
178
|
+
console.log("⚠️ No .env file found");
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
console.log("📄 .env file contents");
|
|
182
|
+
console.log("════════════════════\n");
|
|
183
|
+
const content = readFileSync(envPath, "utf-8");
|
|
184
|
+
const redacted = redactEnvFile(content, opts.showSecrets);
|
|
185
|
+
console.log(redacted);
|
|
186
|
+
if (!opts.showSecrets && content !== redacted) {
|
|
187
|
+
console.log("\n🛡️ Some values are redacted. Use --show-secrets to reveal (careful!)");
|
|
188
|
+
}
|
|
189
|
+
return;
|
|
190
|
+
}
|
|
191
|
+
console.log("📊 Environment Variables");
|
|
192
|
+
console.log(opts.showSecrets
|
|
193
|
+
? "⚠️ WARNING: Secrets are visible!\n"
|
|
194
|
+
: "🛡️ (Secrets automatically redacted)\n");
|
|
51
195
|
console.log("══════════════════════════════════\n");
|
|
52
|
-
|
|
196
|
+
// Get all env vars sorted
|
|
197
|
+
const sortedVars = Object.keys(process.env).sort();
|
|
198
|
+
// Known safe vars to always show first
|
|
199
|
+
const safeVars = [
|
|
53
200
|
"NODE_ENV",
|
|
54
201
|
"GATEWAY_PORT",
|
|
202
|
+
"KOBOLD_GATEWAY_HOST",
|
|
203
|
+
"KOBOLD_GATEWAY_PORT",
|
|
55
204
|
"DISCORD_NOTIFY_CHANNEL_ID",
|
|
56
205
|
];
|
|
57
|
-
|
|
206
|
+
// Show known safe vars
|
|
207
|
+
const shown = new Set();
|
|
208
|
+
for (const v of safeVars) {
|
|
58
209
|
const val = process.env[v];
|
|
59
|
-
if (val) {
|
|
210
|
+
if (val !== undefined) {
|
|
60
211
|
console.log(`${v}=${val}`);
|
|
212
|
+
shown.add(v);
|
|
61
213
|
}
|
|
62
|
-
|
|
63
|
-
|
|
214
|
+
}
|
|
215
|
+
// Show other vars (redacted if secret)
|
|
216
|
+
const otherVars = sortedVars.filter(v => !shown.has(v) && !v.startsWith('_'));
|
|
217
|
+
if (otherVars.length > 0) {
|
|
218
|
+
console.log("\n# Other variables:");
|
|
219
|
+
for (const v of otherVars) {
|
|
220
|
+
const val = process.env[v] || '<not set>';
|
|
221
|
+
const display = formatEnvValue(v, val, opts.showSecrets);
|
|
222
|
+
console.log(`${v}=${display}`);
|
|
64
223
|
}
|
|
65
|
-
}
|
|
66
|
-
|
|
224
|
+
}
|
|
225
|
+
if (!opts.showSecrets) {
|
|
226
|
+
console.log("\n🛡️ Secrets are redacted. Use --show-secrets to reveal (careful!)");
|
|
227
|
+
}
|
|
67
228
|
});
|
|
68
229
|
env
|
|
69
230
|
.command("secrets")
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.js","sourceRoot":"","sources":["../../../../src/cli/extensions/env.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"env.js","sourceRoot":"","sources":["../../../../src/cli/extensions/env.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 🦙 Pi Ollama - Community Extension Wrapper
|
|
3
|
+
*
|
|
4
|
+
* Wraps @0xkobold/pi-ollama npm package
|
|
5
|
+
*
|
|
6
|
+
* Note: This extension is loaded via pi-config.ts
|
|
7
|
+
* The npm package is loaded via `pi install npm:@0xkobold/pi-ollama`
|
|
8
|
+
*/
|
|
9
|
+
export default async function register(pi) {
|
|
10
|
+
console.log("[🦙 PiOllama] Loading npm package...");
|
|
11
|
+
try {
|
|
12
|
+
// Dynamic import from npm package
|
|
13
|
+
const ollamaMod = await import("@0xkobold/pi-ollama");
|
|
14
|
+
const ollamaExt = ollamaMod.default;
|
|
15
|
+
if (typeof ollamaExt !== 'function') {
|
|
16
|
+
throw new Error('Pi-ollama does not export a callable default');
|
|
17
|
+
}
|
|
18
|
+
// Initialize the extension
|
|
19
|
+
await ollamaExt(pi);
|
|
20
|
+
console.log("[🦙 PiOllama] npm package loaded successfully");
|
|
21
|
+
}
|
|
22
|
+
catch (err) {
|
|
23
|
+
console.error("[🦙 PiOllama] Failed to load npm package:", err);
|
|
24
|
+
throw err;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=pi-ollama-wrapper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pi-ollama-wrapper.js","sourceRoot":"","sources":["../../../../src/extensions/community/pi-ollama-wrapper.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,QAAQ,CAAC,EAAgB;IACrD,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;IAEpD,IAAI,CAAC;QACH,kCAAkC;QAClC,MAAM,SAAS,GAAQ,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;QAC3D,MAAM,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC;QAEpC,IAAI,OAAO,SAAS,KAAK,UAAU,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;QAClE,CAAC;QAED,2BAA2B;QAC3B,MAAM,SAAS,CAAC,EAAE,CAAC,CAAC;QAEpB,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;IAC/D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,2CAA2C,EAAE,GAAG,CAAC,CAAC;QAChE,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC"}
|