panopticon-cli 0.3.3 → 0.3.6
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 +40 -14
- package/dist/{chunk-IVAFJ6DS.js → chunk-BH6BR26M.js} +2 -2
- package/dist/{chunk-ZT55DPAC.js → chunk-C6A7S65K.js} +2 -2
- package/dist/{chunk-3SI436SZ.js → chunk-P5TQ5C3J.js} +2 -2
- package/dist/chunk-P5TQ5C3J.js.map +1 -0
- package/dist/cli/index.js +1049 -427
- package/dist/cli/index.js.map +1 -1
- package/dist/dashboard/public/assets/index-C6PTmw-V.css +32 -0
- package/dist/dashboard/public/assets/index-kezR_sk3.js +423 -0
- package/dist/dashboard/public/index.html +13 -0
- package/dist/dashboard/server.js +102398 -0
- package/dist/index.js +2 -2
- package/dist/{projects-EHEXMVSP.js → projects-54CV437J.js} +3 -3
- package/package.json +7 -2
- package/dist/chunk-3SI436SZ.js.map +0 -1
- /package/dist/{chunk-IVAFJ6DS.js.map → chunk-BH6BR26M.js.map} +0 -0
- /package/dist/{chunk-ZT55DPAC.js.map → chunk-C6A7S65K.js.map} +0 -0
- /package/dist/{projects-EHEXMVSP.js.map → projects-54CV437J.js.map} +0 -0
package/README.md
CHANGED
|
@@ -223,6 +223,21 @@ See [docs/DNS_SETUP.md](docs/DNS_SETUP.md) for detailed DNS configuration (espec
|
|
|
223
223
|
- **Linear API key** - For issue tracking integration
|
|
224
224
|
- **Beads CLI (bd)** - For persistent task tracking across sessions
|
|
225
225
|
|
|
226
|
+
### Platform Support
|
|
227
|
+
|
|
228
|
+
The Panopticon dashboard includes terminal streaming, which requires a native binary (`node-pty`). Prebuilt binaries are available for:
|
|
229
|
+
|
|
230
|
+
| Platform | Architecture | Support |
|
|
231
|
+
|----------|-------------|---------|
|
|
232
|
+
| macOS | Intel (x64) | ✅ Prebuilt |
|
|
233
|
+
| macOS | Apple Silicon (arm64) | ✅ Prebuilt |
|
|
234
|
+
| Linux | x64 (glibc) | ✅ Prebuilt |
|
|
235
|
+
| Linux | arm64 (glibc) | ✅ Prebuilt |
|
|
236
|
+
| Linux | musl (Alpine) | ✅ Prebuilt |
|
|
237
|
+
| Windows | x64 | ✅ Prebuilt |
|
|
238
|
+
|
|
239
|
+
If a prebuilt binary is not available for your platform, node-gyp will automatically compile from source during installation (requires Python and build tools).
|
|
240
|
+
|
|
226
241
|
### Why CLI tools instead of API tokens?
|
|
227
242
|
|
|
228
243
|
Panopticon uses `gh` and `glab` CLIs instead of raw API tokens because:
|
|
@@ -342,20 +357,27 @@ Cloister manages specialized agents that handle specific phases of the developme
|
|
|
342
357
|
|
|
343
358
|
#### Merge Agent Workflow
|
|
344
359
|
|
|
345
|
-
The merge-agent is a specialist that handles
|
|
360
|
+
The merge-agent is a specialist that handles **ALL** merges, not just conflicts. This ensures:
|
|
361
|
+
- It sees all code changes coming through the pipeline
|
|
362
|
+
- It builds context about the codebase over time
|
|
363
|
+
- When conflicts DO occur, it has better understanding for intelligent resolution
|
|
364
|
+
- Tests are always run before completing the merge
|
|
365
|
+
|
|
366
|
+
**Workflow:**
|
|
346
367
|
|
|
347
368
|
1. **Pull latest main** - Ensures local main is up-to-date
|
|
348
|
-
2. **
|
|
349
|
-
3. **
|
|
350
|
-
4. **
|
|
351
|
-
5. **
|
|
352
|
-
6. **
|
|
353
|
-
7. **
|
|
369
|
+
2. **Analyze incoming changes** - Reviews what the feature branch contains
|
|
370
|
+
3. **Perform merge** - Merges feature branch into main
|
|
371
|
+
4. **Resolve conflicts** - If conflicts exist, uses AI to resolve them intelligently
|
|
372
|
+
5. **Run tests** - Verifies the merge didn't break anything
|
|
373
|
+
6. **Commit merge** - Commits the merge with descriptive message
|
|
374
|
+
7. **Report results** - Returns success/failure with details
|
|
354
375
|
|
|
355
376
|
**Triggering merge-agent:**
|
|
356
377
|
|
|
357
378
|
```bash
|
|
358
379
|
# Via dashboard - click "Approve & Merge" on an issue card
|
|
380
|
+
# merge-agent is ALWAYS invoked, regardless of whether conflicts exist
|
|
359
381
|
|
|
360
382
|
# Via CLI
|
|
361
383
|
pan specialists wake merge-agent --issue MIN-123
|
|
@@ -363,9 +385,9 @@ pan specialists wake merge-agent --issue MIN-123
|
|
|
363
385
|
|
|
364
386
|
The merge-agent uses a specialized prompt template that instructs it to:
|
|
365
387
|
- Never force-push
|
|
366
|
-
- Always run tests before
|
|
388
|
+
- Always run tests before completing
|
|
367
389
|
- Document conflict resolution decisions
|
|
368
|
-
-
|
|
390
|
+
- Provide detailed feedback on what was merged
|
|
369
391
|
|
|
370
392
|
#### Specialist Auto-Initialization
|
|
371
393
|
|
|
@@ -692,7 +714,7 @@ pan work health status
|
|
|
692
714
|
pan work health daemon --interval 30
|
|
693
715
|
```
|
|
694
716
|
|
|
695
|
-
###
|
|
717
|
+
### FPP Hooks (Fixed Point Principle)
|
|
696
718
|
|
|
697
719
|
```bash
|
|
698
720
|
# Check for pending work on hook
|
|
@@ -1223,7 +1245,7 @@ This ensures every Panopticon-managed project has a well-defined canonical PRD t
|
|
|
1223
1245
|
agent-min-123/
|
|
1224
1246
|
state.json # Agent state (model, phase, complexity)
|
|
1225
1247
|
health.json # Health status
|
|
1226
|
-
hook.json #
|
|
1248
|
+
hook.json # FPP work queue
|
|
1227
1249
|
cv.json # Work history
|
|
1228
1250
|
mail/ # Incoming messages
|
|
1229
1251
|
handoffs/ # Handoff prompts (for debugging)
|
|
@@ -1289,11 +1311,15 @@ When an agent is stuck (no activity for 30+ minutes), Panopticon will:
|
|
|
1289
1311
|
2. Record the kill in health.json
|
|
1290
1312
|
3. Respawn with crash recovery context
|
|
1291
1313
|
|
|
1292
|
-
##
|
|
1314
|
+
## FPP (Fixed Point Principle)
|
|
1315
|
+
|
|
1316
|
+
> "Any runnable action is a fixed point and must resolve before the system can rest."
|
|
1317
|
+
|
|
1318
|
+
*Inspired by Doctor Who: a fixed point in time must occur — it cannot be avoided.*
|
|
1293
1319
|
|
|
1294
|
-
|
|
1320
|
+
**Fixed Point Principle (FPP):** Any runnable bead, hook, or agent action represents a fixed point in execution and must be resolved immediately. Panopticon continues executing until no fixed points remain.
|
|
1295
1321
|
|
|
1296
|
-
|
|
1322
|
+
FPP ensures agents are self-propelling:
|
|
1297
1323
|
1. Work items are pushed to the agent's hook
|
|
1298
1324
|
2. On spawn/recovery, the hook is checked
|
|
1299
1325
|
3. Pending work is injected into the agent's prompt
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
PANOPTICON_HOME
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-P5TQ5C3J.js";
|
|
4
4
|
|
|
5
5
|
// src/lib/projects.ts
|
|
6
6
|
import { existsSync, readFileSync, writeFileSync, mkdirSync } from "fs";
|
|
@@ -170,4 +170,4 @@ export {
|
|
|
170
170
|
createDefaultProjectsConfig,
|
|
171
171
|
initializeProjectsConfig
|
|
172
172
|
};
|
|
173
|
-
//# sourceMappingURL=chunk-
|
|
173
|
+
//# sourceMappingURL=chunk-BH6BR26M.js.map
|
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
SKILLS_DIR,
|
|
8
8
|
SOURCE_SCRIPTS_DIR,
|
|
9
9
|
SYNC_TARGETS
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-P5TQ5C3J.js";
|
|
11
11
|
|
|
12
12
|
// src/lib/config.ts
|
|
13
13
|
import { readFileSync, writeFileSync, existsSync } from "fs";
|
|
@@ -1445,4 +1445,4 @@ export {
|
|
|
1445
1445
|
LinkManager,
|
|
1446
1446
|
getLinkManager
|
|
1447
1447
|
};
|
|
1448
|
-
//# sourceMappingURL=chunk-
|
|
1448
|
+
//# sourceMappingURL=chunk-C6A7S65K.js.map
|
|
@@ -3,7 +3,7 @@ import { homedir } from "os";
|
|
|
3
3
|
import { join } from "path";
|
|
4
4
|
import { fileURLToPath } from "url";
|
|
5
5
|
import { dirname } from "path";
|
|
6
|
-
var PANOPTICON_HOME = join(homedir(), ".panopticon");
|
|
6
|
+
var PANOPTICON_HOME = process.env.PANOPTICON_HOME || join(homedir(), ".panopticon");
|
|
7
7
|
var CONFIG_DIR = PANOPTICON_HOME;
|
|
8
8
|
var SKILLS_DIR = join(PANOPTICON_HOME, "skills");
|
|
9
9
|
var COMMANDS_DIR = join(PANOPTICON_HOME, "commands");
|
|
@@ -100,4 +100,4 @@ export {
|
|
|
100
100
|
SOURCE_SCRIPTS_DIR,
|
|
101
101
|
INIT_DIRS
|
|
102
102
|
};
|
|
103
|
-
//# sourceMappingURL=chunk-
|
|
103
|
+
//# sourceMappingURL=chunk-P5TQ5C3J.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/lib/paths.ts"],"sourcesContent":["import { homedir } from 'os';\nimport { join } from 'path';\n\n// Panopticon home directory (can be overridden for testing)\nexport const PANOPTICON_HOME = process.env.PANOPTICON_HOME || join(homedir(), '.panopticon');\n\n// Subdirectories\nexport const CONFIG_DIR = PANOPTICON_HOME;\nexport const SKILLS_DIR = join(PANOPTICON_HOME, 'skills');\nexport const COMMANDS_DIR = join(PANOPTICON_HOME, 'commands');\nexport const AGENTS_DIR = join(PANOPTICON_HOME, 'agents');\nexport const BIN_DIR = join(PANOPTICON_HOME, 'bin');\nexport const BACKUPS_DIR = join(PANOPTICON_HOME, 'backups');\nexport const COSTS_DIR = join(PANOPTICON_HOME, 'costs');\nexport const HEARTBEATS_DIR = join(PANOPTICON_HOME, 'heartbeats');\n\n// Traefik directories\nexport const TRAEFIK_DIR = join(PANOPTICON_HOME, 'traefik');\nexport const TRAEFIK_DYNAMIC_DIR = join(TRAEFIK_DIR, 'dynamic');\nexport const TRAEFIK_CERTS_DIR = join(TRAEFIK_DIR, 'certs');\n\n// Legacy certs directory (for backwards compatibility)\nexport const CERTS_DIR = join(PANOPTICON_HOME, 'certs');\n\n// Config files\nexport const CONFIG_FILE = join(CONFIG_DIR, 'config.toml');\n\n// AI tool directories\nexport const CLAUDE_DIR = join(homedir(), '.claude');\nexport const CODEX_DIR = join(homedir(), '.codex');\nexport const CURSOR_DIR = join(homedir(), '.cursor');\nexport const GEMINI_DIR = join(homedir(), '.gemini');\n\n// Target sync locations\nexport const SYNC_TARGETS = {\n claude: {\n skills: join(CLAUDE_DIR, 'skills'),\n commands: join(CLAUDE_DIR, 'commands'),\n agents: join(CLAUDE_DIR, 'agents'),\n },\n codex: {\n skills: join(CODEX_DIR, 'skills'),\n commands: join(CODEX_DIR, 'commands'),\n agents: join(CODEX_DIR, 'agents'),\n },\n cursor: {\n skills: join(CURSOR_DIR, 'skills'),\n commands: join(CURSOR_DIR, 'commands'),\n agents: join(CURSOR_DIR, 'agents'),\n },\n gemini: {\n skills: join(GEMINI_DIR, 'skills'),\n commands: join(GEMINI_DIR, 'commands'),\n agents: join(GEMINI_DIR, 'agents'),\n },\n} as const;\n\nexport type Runtime = keyof typeof SYNC_TARGETS;\n\n// Templates directory (in user's ~/.panopticon)\nexport const TEMPLATES_DIR = join(PANOPTICON_HOME, 'templates');\nexport const CLAUDE_MD_TEMPLATES = join(TEMPLATES_DIR, 'claude-md', 'sections');\n\n// Source templates directory (bundled with the package)\n// This is resolved at runtime from the package root\nimport { fileURLToPath } from 'url';\nimport { dirname } from 'path';\n\nconst currentFile = fileURLToPath(import.meta.url);\nconst currentDir = dirname(currentFile);\n\n// Handle both development (src/lib/) and production (dist/) modes\n// In dev: /path/to/panopticon/src/lib/paths.ts -> /path/to/panopticon\n// In prod: /path/to/panopticon/dist/lib/paths.js -> /path/to/panopticon\nlet packageRoot: string;\nif (currentDir.includes('/src/')) {\n // Development mode - go up from src/lib to package root\n packageRoot = dirname(dirname(currentDir));\n} else {\n // Production mode - go up from dist (or dist/lib) to package root\n packageRoot = currentDir.endsWith('/lib')\n ? dirname(dirname(currentDir))\n : dirname(currentDir);\n}\n\nexport const SOURCE_TEMPLATES_DIR = join(packageRoot, 'templates');\nexport const SOURCE_TRAEFIK_TEMPLATES = join(SOURCE_TEMPLATES_DIR, 'traefik');\nexport const SOURCE_SCRIPTS_DIR = join(packageRoot, 'scripts');\n\n// All directories to create on init\nexport const INIT_DIRS = [\n PANOPTICON_HOME,\n SKILLS_DIR,\n COMMANDS_DIR,\n AGENTS_DIR,\n BIN_DIR,\n BACKUPS_DIR,\n COSTS_DIR,\n HEARTBEATS_DIR,\n TEMPLATES_DIR,\n CLAUDE_MD_TEMPLATES,\n CERTS_DIR,\n TRAEFIK_DIR,\n TRAEFIK_DYNAMIC_DIR,\n TRAEFIK_CERTS_DIR,\n];\n"],"mappings":";AAAA,SAAS,eAAe;AACxB,SAAS,YAAY;AAgErB,SAAS,qBAAqB;AAC9B,SAAS,eAAe;AA9DjB,IAAM,kBAAkB,QAAQ,IAAI,mBAAmB,KAAK,QAAQ,GAAG,aAAa;AAGpF,IAAM,aAAa;AACnB,IAAM,aAAa,KAAK,iBAAiB,QAAQ;AACjD,IAAM,eAAe,KAAK,iBAAiB,UAAU;AACrD,IAAM,aAAa,KAAK,iBAAiB,QAAQ;AACjD,IAAM,UAAU,KAAK,iBAAiB,KAAK;AAC3C,IAAM,cAAc,KAAK,iBAAiB,SAAS;AACnD,IAAM,YAAY,KAAK,iBAAiB,OAAO;AAC/C,IAAM,iBAAiB,KAAK,iBAAiB,YAAY;AAGzD,IAAM,cAAc,KAAK,iBAAiB,SAAS;AACnD,IAAM,sBAAsB,KAAK,aAAa,SAAS;AACvD,IAAM,oBAAoB,KAAK,aAAa,OAAO;AAGnD,IAAM,YAAY,KAAK,iBAAiB,OAAO;AAG/C,IAAM,cAAc,KAAK,YAAY,aAAa;AAGlD,IAAM,aAAa,KAAK,QAAQ,GAAG,SAAS;AAC5C,IAAM,YAAY,KAAK,QAAQ,GAAG,QAAQ;AAC1C,IAAM,aAAa,KAAK,QAAQ,GAAG,SAAS;AAC5C,IAAM,aAAa,KAAK,QAAQ,GAAG,SAAS;AAG5C,IAAM,eAAe;AAAA,EAC1B,QAAQ;AAAA,IACN,QAAQ,KAAK,YAAY,QAAQ;AAAA,IACjC,UAAU,KAAK,YAAY,UAAU;AAAA,IACrC,QAAQ,KAAK,YAAY,QAAQ;AAAA,EACnC;AAAA,EACA,OAAO;AAAA,IACL,QAAQ,KAAK,WAAW,QAAQ;AAAA,IAChC,UAAU,KAAK,WAAW,UAAU;AAAA,IACpC,QAAQ,KAAK,WAAW,QAAQ;AAAA,EAClC;AAAA,EACA,QAAQ;AAAA,IACN,QAAQ,KAAK,YAAY,QAAQ;AAAA,IACjC,UAAU,KAAK,YAAY,UAAU;AAAA,IACrC,QAAQ,KAAK,YAAY,QAAQ;AAAA,EACnC;AAAA,EACA,QAAQ;AAAA,IACN,QAAQ,KAAK,YAAY,QAAQ;AAAA,IACjC,UAAU,KAAK,YAAY,UAAU;AAAA,IACrC,QAAQ,KAAK,YAAY,QAAQ;AAAA,EACnC;AACF;AAKO,IAAM,gBAAgB,KAAK,iBAAiB,WAAW;AACvD,IAAM,sBAAsB,KAAK,eAAe,aAAa,UAAU;AAO9E,IAAM,cAAc,cAAc,YAAY,GAAG;AACjD,IAAM,aAAa,QAAQ,WAAW;AAKtC,IAAI;AACJ,IAAI,WAAW,SAAS,OAAO,GAAG;AAEhC,gBAAc,QAAQ,QAAQ,UAAU,CAAC;AAC3C,OAAO;AAEL,gBAAc,WAAW,SAAS,MAAM,IACpC,QAAQ,QAAQ,UAAU,CAAC,IAC3B,QAAQ,UAAU;AACxB;AAEO,IAAM,uBAAuB,KAAK,aAAa,WAAW;AAC1D,IAAM,2BAA2B,KAAK,sBAAsB,SAAS;AACrE,IAAM,qBAAqB,KAAK,aAAa,SAAS;AAGtD,IAAM,YAAY;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;","names":[]}
|