@tekmidian/pai 0.66.7 → 0.66.8
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/dist/{aibroker-client-BevXY1Zz.mjs → aibroker-client-BfnVwGZl.mjs} +3 -3
- package/dist/{aibroker-client-BevXY1Zz.mjs.map → aibroker-client-BfnVwGZl.mjs.map} +1 -1
- package/dist/{aibroker-client-CxTpL_u7.mjs → aibroker-client-C-O3Fflh.mjs} +1 -1
- package/dist/{auto-route-BVeAp0fl.mjs → auto-route-D8TBDNqb.mjs} +3 -3
- package/dist/{auto-route-BVeAp0fl.mjs.map → auto-route-D8TBDNqb.mjs.map} +1 -1
- package/dist/auto-route-DCxTKz19.mjs +7 -0
- package/dist/{chain-8hFKr23C.mjs → chain-BL4khGgy.mjs} +4 -3
- package/dist/{chain-8hFKr23C.mjs.map → chain-BL4khGgy.mjs.map} +1 -1
- package/dist/cli/index.mjs +20 -17
- package/dist/cli/index.mjs.map +1 -1
- package/dist/cli/program.mjs +19 -16
- package/dist/{config-sfaArCsl.mjs → config-DjZELvoA.mjs} +2 -2
- package/dist/{config-sfaArCsl.mjs.map → config-DjZELvoA.mjs.map} +1 -1
- package/dist/{run-env-CkAmx3lb.mjs → config-Dpe2JlbY.mjs} +5 -114
- package/dist/config-Dpe2JlbY.mjs.map +1 -0
- package/dist/{config-UWtzLpXi.mjs → config-yomayAwe.mjs} +1 -1
- package/dist/{context-handover-cache-Bb-H_mTa.mjs → context-handover-cache-DFqxNh-H.mjs} +27 -12
- package/dist/context-handover-cache-DFqxNh-H.mjs.map +1 -0
- package/dist/daemon/index.mjs +20 -16
- package/dist/daemon/index.mjs.map +1 -1
- package/dist/{daemon-CkbX-hV7.mjs → daemon-CsR1S_Qr.mjs} +20 -19
- package/dist/{daemon-CkbX-hV7.mjs.map → daemon-CsR1S_Qr.mjs.map} +1 -1
- package/dist/daemon-WrncnGua.mjs +23 -0
- package/dist/daemon-mcp/index.mjs +15 -13
- package/dist/daemon-mcp/index.mjs.map +1 -1
- package/dist/{embedding-gate-BVrr0BgS.mjs → embedding-gate-DqbKvn56.mjs} +4 -4
- package/dist/{embedding-gate-BVrr0BgS.mjs.map → embedding-gate-DqbKvn56.mjs.map} +1 -1
- package/dist/{embedding-gate-Crj8awk7.mjs → embedding-gate-SJMCPwxG.mjs} +3 -3
- package/dist/{embeddings-DFl88_y-.mjs → embeddings-BUjZMD9F.mjs} +1 -1
- package/dist/{embeddings-DFl88_y-.mjs.map → embeddings-BUjZMD9F.mjs.map} +1 -1
- package/dist/{embeddings-BuA7v4lk.mjs → embeddings-DrJ-ewfi.mjs} +1 -1
- package/dist/{env-DqTjeKoA.mjs → env-CPCNHz3i.mjs} +1 -1
- package/dist/{env-DqTjeKoA.mjs.map → env-CPCNHz3i.mjs.map} +1 -1
- package/dist/factory-DjtXElOI.mjs +9 -0
- package/dist/{factory-mNBitkL_.mjs → factory-yElzJc6f.mjs} +10 -10
- package/dist/{factory-mNBitkL_.mjs.map → factory-yElzJc6f.mjs.map} +1 -1
- package/dist/{fallback-DdC1_s2d.mjs → fallback-2yWDDYiT.mjs} +5 -4
- package/dist/{fallback-DdC1_s2d.mjs.map → fallback-2yWDDYiT.mjs.map} +1 -1
- package/dist/{helpers-CZsi_49C.mjs → helpers-B9LHRJ8R.mjs} +1 -1
- package/dist/{helpers-CZsi_49C.mjs.map → helpers-B9LHRJ8R.mjs.map} +1 -1
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +7 -4
- package/dist/{ipc-client-BgSzY9QJ.mjs → ipc-client-DVZ_EGnu.mjs} +2 -2
- package/dist/{ipc-client-BgSzY9QJ.mjs.map → ipc-client-DVZ_EGnu.mjs.map} +1 -1
- package/dist/main-resolver-DjQsexge.mjs +8 -0
- package/dist/{main-resolver-DEXky_Km.mjs → main-resolver-Dxvn4Mv8.mjs} +7 -6
- package/dist/{main-resolver-DEXky_Km.mjs.map → main-resolver-Dxvn4Mv8.mjs.map} +1 -1
- package/dist/{pai-marker-DXVpFsYz.mjs → pai-marker-1B7iC7oq.mjs} +121 -3
- package/dist/pai-marker-1B7iC7oq.mjs.map +1 -0
- package/dist/{planner-DBoB5GtC.mjs → planner-CspP59ya.mjs} +13 -11
- package/dist/{planner-DBoB5GtC.mjs.map → planner-CspP59ya.mjs.map} +1 -1
- package/dist/{postgres-D-96lgE1.mjs → postgres-CCAGq1qp.mjs} +5 -5
- package/dist/{postgres-D-96lgE1.mjs.map → postgres-CCAGq1qp.mjs.map} +1 -1
- package/dist/postgres-CzkEPfAm.mjs +7 -0
- package/dist/{program-BXns_5kO.mjs → program-cWqZI0_L.mjs} +77 -119
- package/dist/program-cWqZI0_L.mjs.map +1 -0
- package/dist/{query-feedback-VI7Cl-Lr.mjs → query-feedback-GPeVGvIa.mjs} +2 -2
- package/dist/{query-feedback-VI7Cl-Lr.mjs.map → query-feedback-GPeVGvIa.mjs.map} +1 -1
- package/dist/{reranker-3lnggwgq.mjs → reranker-BTiOia8Y.mjs} +1 -1
- package/dist/{reranker-3lnggwgq.mjs.map → reranker-BTiOia8Y.mjs.map} +1 -1
- package/dist/{reranker-CZ2mP4cf.mjs → reranker-YwDT2n5e.mjs} +1 -1
- package/dist/{router-dfjlaOMI.mjs → router-Bk_ySIZT.mjs} +2 -2
- package/dist/{router-dfjlaOMI.mjs.map → router-Bk_ySIZT.mjs.map} +1 -1
- package/dist/router-DyiZNI6o.mjs +3 -0
- package/dist/{run-DPwQkRwh.mjs → run-BZNdpUGQ.mjs} +126 -1795
- package/dist/run-BZNdpUGQ.mjs.map +1 -0
- package/dist/run-env-Cd0Son-Y.mjs +115 -0
- package/dist/run-env-Cd0Son-Y.mjs.map +1 -0
- package/dist/{runtime-paths-BiEi_gaG.mjs → runtime-paths-DkZoxofH.mjs} +1 -1
- package/dist/{runtime-paths-BiEi_gaG.mjs.map → runtime-paths-DkZoxofH.mjs.map} +1 -1
- package/dist/{search-CNAGTiJP.mjs → search-cPDj-9fO.mjs} +2 -2
- package/dist/{search-CNAGTiJP.mjs.map → search-cPDj-9fO.mjs.map} +1 -1
- package/dist/{sources-BxXbzpAJ.mjs → sources-CvvzNZad.mjs} +1 -1
- package/dist/{sources-BxXbzpAJ.mjs.map → sources-CvvzNZad.mjs.map} +1 -1
- package/dist/{stop-words-DtxaTWU_.mjs → stop-words-LtkS-Pej.mjs} +1 -1
- package/dist/{stop-words-DtxaTWU_.mjs.map → stop-words-LtkS-Pej.mjs.map} +1 -1
- package/dist/worktree-CwMRTa0H.mjs +1578 -0
- package/dist/worktree-CwMRTa0H.mjs.map +1 -0
- package/dist/{zettelkasten-wh2Yy1nS.mjs → zettelkasten-DSIe6wpF.mjs} +4 -4
- package/dist/{zettelkasten-wh2Yy1nS.mjs.map → zettelkasten-DSIe6wpF.mjs.map} +1 -1
- package/dist/{zettelkasten-CzcPzEsL.mjs → zettelkasten-DtkAvA18.mjs} +5 -5
- package/package.json +1 -1
- package/dist/auto-route-CboBqsN3.mjs +0 -3
- package/dist/context-handover-cache-Bb-H_mTa.mjs.map +0 -1
- package/dist/daemon-BXTn2EgV.mjs +0 -19
- package/dist/factory-XrH66erA.mjs +0 -9
- package/dist/main-resolver-CobQGm2B.mjs +0 -7
- package/dist/pai-marker-DXVpFsYz.mjs.map +0 -1
- package/dist/postgres-TedJP3yF.mjs +0 -7
- package/dist/program-BXns_5kO.mjs.map +0 -1
- package/dist/router-CKn9e0fo.mjs +0 -3
- package/dist/run-DPwQkRwh.mjs.map +0 -1
- package/dist/run-env-CkAmx3lb.mjs.map +0 -1
|
@@ -1,93 +1,40 @@
|
|
|
1
1
|
import { a as fmtDate, c as ok$1, d as scaffoldProjectDirs, f as shortenPath, g as warn$1, h as smartDecodeDir, i as err, l as renderTable, m as slugify, n as dim$1, o as header, p as slugFromPath, r as encodeDir, s as now, t as bold$1, u as resolvePath } from "./utils-DddRwMsG.mjs";
|
|
2
2
|
import { a as slugify$1, i as parseSessionFilename } from "./migrate-Bq0esMOa.mjs";
|
|
3
|
-
import { n as
|
|
4
|
-
import {
|
|
5
|
-
import { t as
|
|
6
|
-
import {
|
|
7
|
-
import { a as
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import { _ as
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
19
|
-
import { t as
|
|
3
|
+
import { b as OWNER_LABEL_PREFIX, c as migrateConfigFile, d as readMainConfigRaw, f as writeMainConfigRaw, h as resolvedMainConfigPath, l as paiConfigFilePath, m as migrateMainConfigToYaml, n as CONFIG_FILE$2, o as expandHome, p as MainConfigError, s as loadConfig, t as CONFIG_DIR, u as paiConfigYamlFilePath, v as readJsonStrict, x as UNROUTED, y as writeJsonAtomic } from "./config-DjZELvoA.mjs";
|
|
4
|
+
import { a as schedulerLogPath, c as migratePaiFile, d as resolvePaiFile, i as paiSocketPath, l as paiHomeDir, n as daemonLogPath, o as PaiFileMigrationError, s as migratePaiDir, u as paiHomePath } from "./runtime-paths-DkZoxofH.mjs";
|
|
5
|
+
import { A as initWorkersYaml, B as stripModelVariant, F as relocateWorkersYaml, I as workersYamlLegacyNotice, L as workersYamlPath, M as migrateWorkersToYaml, N as needsWorkersYamlRelocation, P as parseWorkersYamlDocument, R as DEFAULT_CONTEXT_WINDOW, S as nativeAnthropicProvider, T as readWorkersSection, _ as expandHome$1, d as PROVIDER_TAGS, j as inlineWorkersYamlKeys, l as MODEL_CAPABILITIES, p as WorkersConfigError, t as ANTHROPIC_NATIVE, v as getProviderOrNative, x as maskKey, y as isModelCapability, z as contextWindowFromModelId } from "./config-Dpe2JlbY.mjs";
|
|
6
|
+
import { D as isLive, E as isChatPane, F as setWorkerLabel, H as ensureNoMcpConfig, I as waitForTerminalStatus, M as ownsPid, O as loadStatus, P as saveStatus, R as longInlinePromptHint, U as eventsPath, W as ledgerPath, _ as appendLedger, g as pendingResults, h as pendingGate, k as loadStatuses, m as formatPending, n as discardWorker, q as workersLogDir, r as gcWorktrees, s as mergeWorker, u as verifyWorker, y as UNLABELED, z as parseRunnerArgs } from "./worktree-CwMRTa0H.mjs";
|
|
7
|
+
import { a as unregistrableReason, n as ensurePaiMarker, o as worktreeReason } from "./pai-marker-1B7iC7oq.mjs";
|
|
8
|
+
import { t as STOP_WORDS } from "./stop-words-LtkS-Pej.mjs";
|
|
9
|
+
import { t as applyRecencyBoost } from "./search-cPDj-9fO.mjs";
|
|
10
|
+
import { c as resolveFromModule, i as retryTransient, n as embedChunksWithBackend, r as indexProjectWithBackend, s as packageRoot } from "./postgres-CCAGq1qp.mjs";
|
|
11
|
+
import { a as getStorageBackend, c as MergeError, f as humanDuration, i as getRegistryBackend, l as federationDbPath, o as oldRegistryPath, r as createStorageBackend, s as registryDbPath, u as oldFederationPath } from "./factory-yElzJc6f.mjs";
|
|
12
|
+
import { c as detectBackends, d as OLLAMA_DEFAULT_MODEL, f as OLLAMA_DEFAULT_URL, i as measureThroughput, o as BACKEND_IDS, p as OLLAMA_ID, s as createBackend, u as provisionOllama } from "./embedding-gate-DqbKvn56.mjs";
|
|
13
|
+
import { At as claudeProjectsDir, Ct as loadScanConfig, Dt as saveScanConfig, Et as resolveHome, Ft as formatDetection, It as formatDetectionJson, Mt as scanTranscriptFolders, Nt as transcriptFiles, Ot as upsertProject, Pt as detectProject, St as cmdScan, a as sessionKeepaliveLedgerSummary, bt as reexecBackground, ct as findLatestNote, jt as findMovedProjects, kt as upsertSession, l as resolveDaemonPid, lt as findNotesDir$1, o as parseSessionUsage, ot as appendCheckpointToNote, r as loadSessionKeepaliveState, rt as extractAndStoreTriples, s as totalUsageTokens, st as applyContinue, t as readContextHandoverCache, ut as readBodyFile, vt as migrateIdentityFile, w as migrateSummaryCooldowns, wt as migrateScanConfig, y as migrateWorkQueue } from "./context-handover-cache-DFqxNh-H.mjs";
|
|
14
|
+
import { A as ensureProxyRunning, I as pinNotices, L as projectLaunchConfig, R as describeMcp, _ as clickrControlsArgv, c as waitOn, d as sayToWorker, g as openPaneForWorker, h as openFollowPane, i as usageContextTokens, j as stopProxy, k as DEFAULT_PROXY_PORT, l as handoffFromInside, m as closeEndedPanes, n as runWorker, o as parseWorkerReport, p as checkPaneForWorker, r as testProvider, v as markControlsHeld, x as requestKill, y as callerDescription, z as expandMcpNames } from "./run-BZNdpUGQ.mjs";
|
|
15
|
+
import { t as PaiClient } from "./ipc-client-DVZ_EGnu.mjs";
|
|
16
|
+
import { A as getConfigValueOp, C as setWorkersEnabled, D as useProvider, E as updateProvider, M as setConfigValueOp, N as unsetConfigValueOp, O as MainConfigOpsError, S as setProviderModel, T as unsetClass, _ as removeProvider, a as followWorkers, b as setClass, c as statusLineOutput, d as addProvider, f as classTargetText, g as modelPrefsText, h as describeProviders, i as fallbackStatusText, j as listConfigOp, k as formatConfigGetOutput, l as readSpecPrompt, m as describeModels, n as fallbackOn, o as psOutput, p as describeCapabilities, r as fallbackStatus, s as replayOutput, t as fallbackOff, u as resolveSpecPath, v as resolveProviderName, w as unsetCapabilityPreference, x as setProviderEnabled, y as setCapabilityPreference } from "./fallback-2yWDDYiT.mjs";
|
|
17
|
+
import { _ as resolveSessionByNameOrId, a as buildDeduped, c as hasConversation, d as providerResumePlan, f as restoreTopLevel, g as migrateSessionScanCache, h as fmtAge, l as launchInDir, m as printExitDir, o as normalizeName$2, p as resumeArgvText, s as renderDedupedSessions, t as cmdMain, u as launchPrompt, v as scanCacheFilePath, y as scanSessions } from "./main-resolver-Dxvn4Mv8.mjs";
|
|
18
|
+
import { n as queriesDirPath, t as migrateQueriesDir } from "./query-feedback-GPeVGvIa.mjs";
|
|
19
|
+
import { t as buildRunEnv } from "./run-env-Cd0Son-Y.mjs";
|
|
20
|
+
import { i as sendToSession, n as fetchLiveSessions, r as revealItermSession, t as callAiBroker } from "./aibroker-client-BfnVwGZl.mjs";
|
|
21
|
+
import { t as runChain } from "./chain-BL4khGgy.mjs";
|
|
20
22
|
import { appendFileSync, chmodSync, closeSync, copyFileSync, cpSync, createReadStream, existsSync, lstatSync, mkdirSync, openSync, readFileSync, readdirSync, readlinkSync, realpathSync, renameSync, statSync, symlinkSync, unlinkSync, writeFileSync } from "node:fs";
|
|
21
23
|
import { homedir, platform, tmpdir, userInfo } from "node:os";
|
|
22
24
|
import { basename, dirname, join, relative, resolve, sep } from "node:path";
|
|
23
25
|
import chalk from "chalk";
|
|
26
|
+
import { execFile, execFileSync, execSync, spawn, spawnSync } from "node:child_process";
|
|
27
|
+
import { parseDocument } from "yaml";
|
|
24
28
|
import { createHash, randomUUID } from "node:crypto";
|
|
25
29
|
import { Command, InvalidArgumentError } from "commander";
|
|
26
30
|
import { fileURLToPath } from "node:url";
|
|
27
31
|
import pg from "pg";
|
|
28
|
-
import { execFile, execFileSync, execSync, spawn, spawnSync } from "node:child_process";
|
|
29
|
-
import { parseDocument } from "yaml";
|
|
30
32
|
import BetterSqlite3 from "better-sqlite3";
|
|
31
33
|
import { createInterface } from "node:readline";
|
|
32
34
|
import { createConnection } from "net";
|
|
33
35
|
import { getEncoding } from "js-tiktoken";
|
|
34
36
|
import { promisify } from "node:util";
|
|
35
37
|
|
|
36
|
-
//#region src/registry/registrable.ts
|
|
37
|
-
/**
|
|
38
|
-
* registrable.ts — directories that must never become registered projects.
|
|
39
|
-
*
|
|
40
|
-
* A project is a durable thing. The registry, however, has been accepting
|
|
41
|
-
* whatever directory a session happened to start in, and some of those
|
|
42
|
-
* directories are disposable by construction. Measured on the real registry,
|
|
43
|
-
* 2026-08-04:
|
|
44
|
-
*
|
|
45
|
-
* 08 - Others/MDF/Infrastruktur/.claude/worktrees/cool-haibt 1 session
|
|
46
|
-
* 08 - Others/MDF/Infrastruktur/.claude/worktrees/strange-haibt 7 sessions
|
|
47
|
-
* /private/tmp/ops-webui dead
|
|
48
|
-
* /private/tmp/claude-501/-Users-…-AIBroker/aae854c6-… dead
|
|
49
|
-
*
|
|
50
|
-
* The worktrees are agent isolation directories, created to be removed. The temp
|
|
51
|
-
* paths are exactly what their name says. Registering them attributes session
|
|
52
|
-
* history to a location with no future, and lets `pai <name>` route someone into
|
|
53
|
-
* a directory a cleanup can delete underneath them.
|
|
54
|
-
*
|
|
55
|
-
* So this refuses at the point of registration rather than reclassifying
|
|
56
|
-
* afterwards. It is a guard, not a policy about what health should call things —
|
|
57
|
-
* it stops the set growing while the vocabulary question (dead vs duplicate vs
|
|
58
|
-
* misnamed vs ephemeral) is decided separately.
|
|
59
|
-
*
|
|
60
|
-
* Found by the AIBroker session while we were dividing up the dead-path work.
|
|
61
|
-
*/
|
|
62
|
-
/** Path fragments that mark a location as disposable, with why. */
|
|
63
|
-
const EPHEMERAL = [
|
|
64
|
-
{
|
|
65
|
-
fragment: `${sep}.claude${sep}worktrees${sep}`,
|
|
66
|
-
because: "a git worktree created for agent isolation — it is meant to be removed"
|
|
67
|
-
},
|
|
68
|
-
{
|
|
69
|
-
fragment: `${sep}private${sep}tmp${sep}`,
|
|
70
|
-
because: "a system temp directory"
|
|
71
|
-
},
|
|
72
|
-
{
|
|
73
|
-
fragment: `${sep}var${sep}folders${sep}`,
|
|
74
|
-
because: "a macOS per-user temp directory"
|
|
75
|
-
}
|
|
76
|
-
];
|
|
77
|
-
/**
|
|
78
|
-
* Why this path cannot be a project, or undefined if it can.
|
|
79
|
-
*
|
|
80
|
-
* Returns the reason rather than a boolean so the caller can tell the user which
|
|
81
|
-
* rule caught them — "refused" without a reason invites someone to work around it
|
|
82
|
-
* rather than move their project somewhere durable.
|
|
83
|
-
*/
|
|
84
|
-
function unregistrableReason(rootPath) {
|
|
85
|
-
const padded = rootPath.endsWith(sep) ? rootPath : rootPath + sep;
|
|
86
|
-
for (const { fragment, because } of EPHEMERAL) if (padded.includes(fragment)) return because;
|
|
87
|
-
if (padded.startsWith(`${sep}tmp${sep}`)) return "a system temp directory";
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
//#endregion
|
|
91
38
|
//#region src/session/promote.ts
|
|
92
39
|
/**
|
|
93
40
|
* pai project promote --from-session <path> --to <new-project-path> [--name "Name"]
|
|
@@ -155,7 +102,7 @@ async function cmdPromote(opts) {
|
|
|
155
102
|
console.error(dim$1(` Pick a durable location for the new project.`));
|
|
156
103
|
process.exit(1);
|
|
157
104
|
}
|
|
158
|
-
const { getRegistryBackend } = await import("./factory-
|
|
105
|
+
const { getRegistryBackend } = await import("./factory-DjtXElOI.mjs");
|
|
159
106
|
const registryBackend = await getRegistryBackend();
|
|
160
107
|
const encodedDir = encodeDir(targetPath);
|
|
161
108
|
if (await registryBackend.getProjectBySlug(slug) ?? await registryBackend.getProjectByRootPath(targetPath) ?? await registryBackend.getProjectByEncodedDir(encodedDir)) {
|
|
@@ -1957,6 +1904,12 @@ async function cmdHere(name, opts = {}) {
|
|
|
1957
1904
|
console.log(dim$1(`Would create ${finalSlug} (${name}) at ${target}`));
|
|
1958
1905
|
return;
|
|
1959
1906
|
}
|
|
1907
|
+
const unregistrable = worktreeReason(target);
|
|
1908
|
+
if (unregistrable) {
|
|
1909
|
+
console.error(err(`Not registering ${target}: it is ${unregistrable}.`));
|
|
1910
|
+
process.exitCode = 1;
|
|
1911
|
+
return;
|
|
1912
|
+
}
|
|
1960
1913
|
const ts = now();
|
|
1961
1914
|
await backend.createProject({
|
|
1962
1915
|
slug: finalSlug,
|
|
@@ -2039,7 +1992,7 @@ async function cmdUnregister(slug, opts = {}) {
|
|
|
2039
1992
|
//#region src/cli/commands/project/projects-index.ts
|
|
2040
1993
|
function registerProjectsCommands(projectsCmd) {
|
|
2041
1994
|
projectsCmd.command("list", { isDefault: true }).description("Show the unified deduped listing (same as `pai`).\nUse --all to include cold / zero-session / archived projects.").option("--all", "Show all entries including cold / zero-session / archived projects").option("-n, --n <count>", "Max rows to show", "20").action(async (opts) => {
|
|
2042
|
-
const { cmdMain } = await import("./main-resolver-
|
|
1995
|
+
const { cmdMain } = await import("./main-resolver-DjQsexge.mjs");
|
|
2043
1996
|
await cmdMain(void 0, void 0, opts);
|
|
2044
1997
|
});
|
|
2045
1998
|
projectsCmd.command("list-raw").description("Raw registry listing with slug, path, status, last_active columns").option("--all", "Include archived projects (default: active only)").option("--status <status>", "Filter by status: active | archived").option("--tag <tag>", "Filter by tag").option("--type <type>", "Filter by type").action(async (opts) => {
|
|
@@ -2193,7 +2146,12 @@ async function cmdMigrate$1() {
|
|
|
2193
2146
|
const encodedDir = entry.encoded_dir;
|
|
2194
2147
|
const slug = slugify$1(rootPath);
|
|
2195
2148
|
try {
|
|
2196
|
-
const
|
|
2149
|
+
const upserted = await upsertProject(backend, slug, rootPath, encodedDir);
|
|
2150
|
+
if (!upserted) {
|
|
2151
|
+
projectsSkipped++;
|
|
2152
|
+
continue;
|
|
2153
|
+
}
|
|
2154
|
+
const { isNew, id } = upserted;
|
|
2197
2155
|
if (isNew) projectsNew++;
|
|
2198
2156
|
else projectsSkipped++;
|
|
2199
2157
|
const notes = entry.notes ?? [];
|
|
@@ -2905,8 +2863,8 @@ const DEFAULT_PAGE_SIZE = 500;
|
|
|
2905
2863
|
async function runEmbed(backend, projectId, projectSlug, batchSize = 50, pageSize = DEFAULT_PAGE_SIZE) {
|
|
2906
2864
|
const label = projectSlug ? `project ${projectSlug}` : "all projects";
|
|
2907
2865
|
console.log(dim$1(`Generating embeddings for ${label} (this may take a while on first run)...`));
|
|
2908
|
-
const { serializeEmbedding } = await import("./embeddings-
|
|
2909
|
-
const { gateBackend } = await import("./embedding-gate-
|
|
2866
|
+
const { serializeEmbedding } = await import("./embeddings-DrJ-ewfi.mjs");
|
|
2867
|
+
const { gateBackend } = await import("./embedding-gate-SJMCPwxG.mjs");
|
|
2910
2868
|
const gate = await gateBackend(backend, { record: true });
|
|
2911
2869
|
if (!gate.ok) {
|
|
2912
2870
|
console.error(err(gate.reason));
|
|
@@ -3082,7 +3040,7 @@ function registerSearchCommand(memoryCmd) {
|
|
|
3082
3040
|
let results;
|
|
3083
3041
|
if (mode === "keyword") results = await backend.searchKeyword(query, searchOpts);
|
|
3084
3042
|
else {
|
|
3085
|
-
const { embedQuery } = await import("./embedding-gate-
|
|
3043
|
+
const { embedQuery } = await import("./embedding-gate-SJMCPwxG.mjs");
|
|
3086
3044
|
console.log(dim$1("Generating query embedding..."));
|
|
3087
3045
|
const q = await embedQuery(backend, query);
|
|
3088
3046
|
const queryEmbedding = q.vec;
|
|
@@ -3132,7 +3090,7 @@ function registerSearchCommand(memoryCmd) {
|
|
|
3132
3090
|
return;
|
|
3133
3091
|
}
|
|
3134
3092
|
if (opts.rerank !== false) {
|
|
3135
|
-
const { rerankResults } = await import("./reranker-
|
|
3093
|
+
const { rerankResults } = await import("./reranker-YwDT2n5e.mjs");
|
|
3136
3094
|
console.log(dim$1("Reranking with cross-encoder..."));
|
|
3137
3095
|
results = await rerankResults(query, results, { topK: maxResults });
|
|
3138
3096
|
}
|
|
@@ -3271,9 +3229,9 @@ function registerStatsCommands(memoryCmd) {
|
|
|
3271
3229
|
//#region src/cli/commands/memory/sources-cmd.ts
|
|
3272
3230
|
function registerSourcesCommand(memoryCmd) {
|
|
3273
3231
|
memoryCmd.command("sources").description("Show what the indexer has taken in: composition by source, which roots\ncontent enters from, the heaviest single files, and how many chunks are\nrewritten per day (which distinguishes a finite backlog from a treadmill).").option("--limit <n>", "Rows per section (default 8)", "8").action(async (opts) => {
|
|
3274
|
-
const { createStorageBackend } = await import("./factory-
|
|
3275
|
-
const { loadConfig } = await import("./config-
|
|
3276
|
-
const { cmdMemorySources } = await import("./sources-
|
|
3232
|
+
const { createStorageBackend } = await import("./factory-DjtXElOI.mjs");
|
|
3233
|
+
const { loadConfig } = await import("./config-yomayAwe.mjs");
|
|
3234
|
+
const { cmdMemorySources } = await import("./sources-CvvzNZad.mjs");
|
|
3277
3235
|
let backend;
|
|
3278
3236
|
try {
|
|
3279
3237
|
backend = await createStorageBackend(loadConfig());
|
|
@@ -4107,8 +4065,8 @@ async function escalate(task, headline, detail, state, now, opts) {
|
|
|
4107
4065
|
state.alarmedAt[task.id] = now;
|
|
4108
4066
|
let delivered = false;
|
|
4109
4067
|
try {
|
|
4110
|
-
const { routeNotification } = await import("./router-
|
|
4111
|
-
const { loadConfig } = await import("./config-
|
|
4068
|
+
const { routeNotification } = await import("./router-DyiZNI6o.mjs");
|
|
4069
|
+
const { loadConfig } = await import("./config-yomayAwe.mjs");
|
|
4112
4070
|
delivered = (await routeNotification({
|
|
4113
4071
|
event: "error",
|
|
4114
4072
|
title: `PAI: ${headline}`,
|
|
@@ -4143,7 +4101,7 @@ async function escalate(task, headline, detail, state, now, opts) {
|
|
|
4143
4101
|
async function alertParked(task, reason) {
|
|
4144
4102
|
const text = `PAI parked "${task.title}" (${task.id}) — the scheduler will not retry it.\nReason: ${reason}\nTo release it: fix the cause, then move the due date — due_string, natural language only (e.g. "tomorrow 9am").`;
|
|
4145
4103
|
try {
|
|
4146
|
-
const { callAiBroker } = await import("./aibroker-client-
|
|
4104
|
+
const { callAiBroker } = await import("./aibroker-client-C-O3Fflh.mjs");
|
|
4147
4105
|
await callAiBroker("pailot_send", { text }, 8e3);
|
|
4148
4106
|
} catch (e) {
|
|
4149
4107
|
console.error(`[pai-poller] parked-task alert not delivered to PAILot (${e instanceof Error ? e.message : String(e)}): ${text}`);
|
|
@@ -7239,8 +7197,8 @@ function cmdLogs(opts) {
|
|
|
7239
7197
|
}
|
|
7240
7198
|
function registerDaemonCommands(daemonCmd) {
|
|
7241
7199
|
daemonCmd.command("serve").description("Start the PAI daemon in the foreground").action(async () => {
|
|
7242
|
-
const { serve } = await import("./daemon-
|
|
7243
|
-
const { loadConfig: lc, ensureConfigDir } = await import("./config-
|
|
7200
|
+
const { serve } = await import("./daemon-WrncnGua.mjs");
|
|
7201
|
+
const { loadConfig: lc, ensureConfigDir } = await import("./config-yomayAwe.mjs");
|
|
7244
7202
|
ensureConfigDir();
|
|
7245
7203
|
await serve(lc());
|
|
7246
7204
|
});
|
|
@@ -9895,7 +9853,7 @@ async function cmdExplore(note, opts) {
|
|
|
9895
9853
|
const depth = parseInt(opts.depth ?? "3", 10);
|
|
9896
9854
|
const direction = opts.direction ?? "both";
|
|
9897
9855
|
const mode = opts.mode ?? "all";
|
|
9898
|
-
const { zettelExplore } = await import("./zettelkasten-
|
|
9856
|
+
const { zettelExplore } = await import("./zettelkasten-DtkAvA18.mjs");
|
|
9899
9857
|
const result = await zettelExplore(await getFedBackend(), {
|
|
9900
9858
|
startNote: note,
|
|
9901
9859
|
depth,
|
|
@@ -9960,7 +9918,7 @@ async function cmdHealth(opts) {
|
|
|
9960
9918
|
const projectPath = opts.project;
|
|
9961
9919
|
const recentDays = parseInt(opts.days ?? "30", 10);
|
|
9962
9920
|
const includeTypes = opts.include ? opts.include.split(",").map((s) => s.trim()) : void 0;
|
|
9963
|
-
const { zettelHealth } = await import("./zettelkasten-
|
|
9921
|
+
const { zettelHealth } = await import("./zettelkasten-DtkAvA18.mjs");
|
|
9964
9922
|
const result = await zettelHealth(await getFedBackend(), {
|
|
9965
9923
|
scope,
|
|
9966
9924
|
projectPath,
|
|
@@ -10031,7 +9989,7 @@ async function cmdSurprise(note, opts) {
|
|
|
10031
9989
|
const limit = parseInt(opts.limit ?? "10", 10);
|
|
10032
9990
|
const minSimilarity = parseFloat(opts.minSimilarity ?? "0.3");
|
|
10033
9991
|
const minGraphDistance = parseInt(opts.minDistance ?? "3", 10);
|
|
10034
|
-
const { zettelSurprise } = await import("./zettelkasten-
|
|
9992
|
+
const { zettelSurprise } = await import("./zettelkasten-DtkAvA18.mjs");
|
|
10035
9993
|
const backend = await getFedBackend();
|
|
10036
9994
|
console.log();
|
|
10037
9995
|
console.log(header(" PAI Zettel Surprise"));
|
|
@@ -10086,7 +10044,7 @@ async function cmdSuggest(note, opts) {
|
|
|
10086
10044
|
const vaultProjectId = parseInt(opts.vaultProjectId, 10);
|
|
10087
10045
|
const limit = parseInt(opts.limit ?? "5", 10);
|
|
10088
10046
|
const excludeLinked = opts.excludeLinked !== false;
|
|
10089
|
-
const { zettelSuggest } = await import("./zettelkasten-
|
|
10047
|
+
const { zettelSuggest } = await import("./zettelkasten-DtkAvA18.mjs");
|
|
10090
10048
|
const backend = await getFedBackend();
|
|
10091
10049
|
console.log();
|
|
10092
10050
|
console.log(header(" PAI Zettel Suggest"));
|
|
@@ -10139,7 +10097,7 @@ async function cmdConverse(question, opts) {
|
|
|
10139
10097
|
const vaultProjectId = parseInt(opts.vaultProjectId, 10);
|
|
10140
10098
|
const depth = parseInt(opts.depth ?? "2", 10);
|
|
10141
10099
|
const limit = parseInt(opts.limit ?? "15", 10);
|
|
10142
|
-
const { zettelConverse } = await import("./zettelkasten-
|
|
10100
|
+
const { zettelConverse } = await import("./zettelkasten-DtkAvA18.mjs");
|
|
10143
10101
|
const backend = await getFedBackend();
|
|
10144
10102
|
console.log();
|
|
10145
10103
|
console.log(header(" PAI Zettel Converse"));
|
|
@@ -10202,7 +10160,7 @@ async function cmdThemes(opts) {
|
|
|
10202
10160
|
const minClusterSize = parseInt(opts.minSize ?? "3", 10);
|
|
10203
10161
|
const maxThemes = parseInt(opts.maxThemes ?? "10", 10);
|
|
10204
10162
|
const similarityThreshold = parseFloat(opts.threshold ?? "0.65");
|
|
10205
|
-
const { zettelThemes } = await import("./zettelkasten-
|
|
10163
|
+
const { zettelThemes } = await import("./zettelkasten-DtkAvA18.mjs");
|
|
10206
10164
|
const backend = await getFedBackend();
|
|
10207
10165
|
console.log();
|
|
10208
10166
|
console.log(header(" PAI Zettel Themes"));
|
|
@@ -16274,7 +16232,7 @@ async function migrateToPostgres(opts = {}) {
|
|
|
16274
16232
|
const dump = pgDump(container, pgConfig, dumpPath);
|
|
16275
16233
|
if (!dump.ok) return refused(dump.reason, dryRun);
|
|
16276
16234
|
}
|
|
16277
|
-
const { PostgresBackend } = await import("./postgres-
|
|
16235
|
+
const { PostgresBackend } = await import("./postgres-CzkEPfAm.mjs");
|
|
16278
16236
|
await PostgresBackend.ensureDatabase(pgConfig);
|
|
16279
16237
|
const sqlite = new BetterSqlite3(sqliteFederationPath, { readonly: true });
|
|
16280
16238
|
const registrySqlite = sqliteRegistryPath === sqliteFederationPath ? sqlite : new BetterSqlite3(sqliteRegistryPath, { readonly: true });
|
|
@@ -16845,7 +16803,7 @@ async function getSessionTags(registryBackend, sessionId) {
|
|
|
16845
16803
|
* Session CRUD commands: list, info, rename, slug, tag, route, active, auto-route.
|
|
16846
16804
|
*/
|
|
16847
16805
|
async function cmdList(projectSlug, opts) {
|
|
16848
|
-
const { getRegistryBackend } = await import("./factory-
|
|
16806
|
+
const { getRegistryBackend } = await import("./factory-DjtXElOI.mjs");
|
|
16849
16807
|
const registryBackend = await getRegistryBackend();
|
|
16850
16808
|
const limit = parseInt(opts.limit ?? "20", 10);
|
|
16851
16809
|
let project;
|
|
@@ -16910,7 +16868,7 @@ async function cmdList(projectSlug, opts) {
|
|
|
16910
16868
|
console.log(dim$1(` ${rows.length} session(s) shown (limit: ${limit})`));
|
|
16911
16869
|
}
|
|
16912
16870
|
async function cmdInfo(projectSlug, sessionNumber) {
|
|
16913
|
-
const { getRegistryBackend } = await import("./factory-
|
|
16871
|
+
const { getRegistryBackend } = await import("./factory-DjtXElOI.mjs");
|
|
16914
16872
|
const registryBackend = await getRegistryBackend();
|
|
16915
16873
|
const project = await getProject$1(registryBackend, projectSlug);
|
|
16916
16874
|
if (!project) {
|
|
@@ -16934,7 +16892,7 @@ async function cmdInfo(projectSlug, sessionNumber) {
|
|
|
16934
16892
|
console.log();
|
|
16935
16893
|
}
|
|
16936
16894
|
async function cmdRename(projectSlug, numberOrLatest, newSlug) {
|
|
16937
|
-
const { getRegistryBackend } = await import("./factory-
|
|
16895
|
+
const { getRegistryBackend } = await import("./factory-DjtXElOI.mjs");
|
|
16938
16896
|
await cmdRenameWith(await getRegistryBackend(), projectSlug, numberOrLatest, newSlug);
|
|
16939
16897
|
}
|
|
16940
16898
|
async function cmdRenameWith(registryBackend, projectSlug, numberOrLatest, newSlug) {
|
|
@@ -16997,7 +16955,7 @@ async function cmdRenameWith(registryBackend, projectSlug, numberOrLatest, newSl
|
|
|
16997
16955
|
console.log();
|
|
16998
16956
|
}
|
|
16999
16957
|
async function cmdSlug(projectSlug, numberOrLatest, opts) {
|
|
17000
|
-
const { getRegistryBackend } = await import("./factory-
|
|
16958
|
+
const { getRegistryBackend } = await import("./factory-DjtXElOI.mjs");
|
|
17001
16959
|
const registryBackend = await getRegistryBackend();
|
|
17002
16960
|
const project = await getProject$1(registryBackend, projectSlug);
|
|
17003
16961
|
if (!project) {
|
|
@@ -17027,7 +16985,7 @@ async function cmdSlug(projectSlug, numberOrLatest, opts) {
|
|
|
17027
16985
|
}
|
|
17028
16986
|
}
|
|
17029
16987
|
async function cmdTag(projectSlug, sessionNumber, rawTags) {
|
|
17030
|
-
const { getRegistryBackend } = await import("./factory-
|
|
16988
|
+
const { getRegistryBackend } = await import("./factory-DjtXElOI.mjs");
|
|
17031
16989
|
const registryBackend = await getRegistryBackend();
|
|
17032
16990
|
const project = await getProject$1(registryBackend, projectSlug);
|
|
17033
16991
|
if (!project) {
|
|
@@ -17067,7 +17025,7 @@ async function cmdTag(projectSlug, sessionNumber, rawTags) {
|
|
|
17067
17025
|
console.log();
|
|
17068
17026
|
}
|
|
17069
17027
|
async function cmdRoute(projectSlug, sessionNumber, targetProjectSlug, opts) {
|
|
17070
|
-
const { getRegistryBackend } = await import("./factory-
|
|
17028
|
+
const { getRegistryBackend } = await import("./factory-DjtXElOI.mjs");
|
|
17071
17029
|
const registryBackend = await getRegistryBackend();
|
|
17072
17030
|
const project = await getProject$1(registryBackend, projectSlug);
|
|
17073
17031
|
if (!project) {
|
|
@@ -17109,7 +17067,7 @@ async function cmdRoute(projectSlug, sessionNumber, targetProjectSlug, opts) {
|
|
|
17109
17067
|
console.log();
|
|
17110
17068
|
}
|
|
17111
17069
|
async function cmdActive(opts) {
|
|
17112
|
-
const { getRegistryBackend } = await import("./factory-
|
|
17070
|
+
const { getRegistryBackend } = await import("./factory-DjtXElOI.mjs");
|
|
17113
17071
|
const registryBackend = await getRegistryBackend();
|
|
17114
17072
|
const minutes = parseInt(opts.minutes ?? "60", 10);
|
|
17115
17073
|
const cutoff = Date.now() - minutes * 60 * 1e3;
|
|
@@ -17196,9 +17154,9 @@ async function cmdActive(opts) {
|
|
|
17196
17154
|
], rows));
|
|
17197
17155
|
}
|
|
17198
17156
|
async function cmdAutoRoute(opts) {
|
|
17199
|
-
const { autoRoute, formatAutoRouteJson } = await import("./auto-route-
|
|
17200
|
-
const { getRegistryBackend, createStorageBackend } = await import("./factory-
|
|
17201
|
-
const { loadConfig } = await import("./config-
|
|
17157
|
+
const { autoRoute, formatAutoRouteJson } = await import("./auto-route-DCxTKz19.mjs");
|
|
17158
|
+
const { getRegistryBackend, createStorageBackend } = await import("./factory-DjtXElOI.mjs");
|
|
17159
|
+
const { loadConfig } = await import("./config-yomayAwe.mjs");
|
|
17202
17160
|
const config = loadConfig();
|
|
17203
17161
|
const registryBackend = await getRegistryBackend();
|
|
17204
17162
|
const federation = await createStorageBackend(config);
|
|
@@ -17434,7 +17392,7 @@ async function cmdPause(opts) {
|
|
|
17434
17392
|
process.exitCode = 1;
|
|
17435
17393
|
return;
|
|
17436
17394
|
}
|
|
17437
|
-
const { getRegistryBackend } = await import("./factory-
|
|
17395
|
+
const { getRegistryBackend } = await import("./factory-DjtXElOI.mjs");
|
|
17438
17396
|
const registryBackend = await getRegistryBackend();
|
|
17439
17397
|
const cwd = process.cwd();
|
|
17440
17398
|
const project = await resolveProjectByCwd(registryBackend, cwd);
|
|
@@ -17829,7 +17787,7 @@ function buildStopBody(project, sessionId) {
|
|
|
17829
17787
|
}
|
|
17830
17788
|
}
|
|
17831
17789
|
async function cmdHandover(projectSlug, numberOrLatest, sessionId) {
|
|
17832
|
-
const { getRegistryBackend } = await import("./factory-
|
|
17790
|
+
const { getRegistryBackend } = await import("./factory-DjtXElOI.mjs");
|
|
17833
17791
|
const registryBackend = await getRegistryBackend();
|
|
17834
17792
|
let project;
|
|
17835
17793
|
if (projectSlug) {
|
|
@@ -18125,7 +18083,7 @@ function touchSentinel(rootPath) {
|
|
|
18125
18083
|
async function cmdAutosave(opts) {
|
|
18126
18084
|
const minGap = parseInt(opts.minGap ?? String(DEFAULT_MIN_GAP), 10);
|
|
18127
18085
|
const cwd = process.cwd();
|
|
18128
|
-
const { getRegistryBackend } = await import("./factory-
|
|
18086
|
+
const { getRegistryBackend } = await import("./factory-DjtXElOI.mjs");
|
|
18129
18087
|
const registryBackend = await getRegistryBackend();
|
|
18130
18088
|
const project = await resolveProjectByCwd(registryBackend, cwd);
|
|
18131
18089
|
if (!project) return;
|
|
@@ -20501,8 +20459,8 @@ async function analyzeProject(registryBackend, project) {
|
|
|
20501
20459
|
async function countVectorDbPaths(oldPaths) {
|
|
20502
20460
|
if (oldPaths.length === 0) return 0;
|
|
20503
20461
|
try {
|
|
20504
|
-
const { loadConfig } = await import("./config-
|
|
20505
|
-
const { createStorageBackend } = await import("./factory-
|
|
20462
|
+
const { loadConfig } = await import("./config-yomayAwe.mjs");
|
|
20463
|
+
const { createStorageBackend } = await import("./factory-DjtXElOI.mjs");
|
|
20506
20464
|
const config = loadConfig();
|
|
20507
20465
|
if (config.storageBackend !== "postgres") return 0;
|
|
20508
20466
|
const backend = await createStorageBackend(config);
|
|
@@ -20519,8 +20477,8 @@ async function countVectorDbPaths(oldPaths) {
|
|
|
20519
20477
|
async function updateVectorDbPaths(moves) {
|
|
20520
20478
|
if (moves.length === 0) return 0;
|
|
20521
20479
|
try {
|
|
20522
|
-
const { loadConfig } = await import("./config-
|
|
20523
|
-
const { createStorageBackend } = await import("./factory-
|
|
20480
|
+
const { loadConfig } = await import("./config-yomayAwe.mjs");
|
|
20481
|
+
const { createStorageBackend } = await import("./factory-DjtXElOI.mjs");
|
|
20524
20482
|
const config = loadConfig();
|
|
20525
20483
|
if (config.storageBackend !== "postgres") return 0;
|
|
20526
20484
|
const backend = await createStorageBackend(config);
|
|
@@ -20607,7 +20565,7 @@ async function displayDryRun(plans) {
|
|
|
20607
20565
|
console.log();
|
|
20608
20566
|
}
|
|
20609
20567
|
async function executeCleanup(plans, skipReindex) {
|
|
20610
|
-
const { getRegistryBackend } = await import("./factory-
|
|
20568
|
+
const { getRegistryBackend } = await import("./factory-DjtXElOI.mjs");
|
|
20611
20569
|
const registryBackend = await getRegistryBackend();
|
|
20612
20570
|
let deleted = 0;
|
|
20613
20571
|
let renamed = 0;
|
|
@@ -20804,7 +20762,7 @@ async function executeCleanup(plans, skipReindex) {
|
|
|
20804
20762
|
//#region src/cli/commands/session-cleanup/index.ts
|
|
20805
20763
|
function registerSessionCleanupCommand(sessionCmd) {
|
|
20806
20764
|
sessionCmd.command("cleanup [project-slug]").description("Clean up session notes: delete empties, auto-name unnamed, move into YYYY/MM/ hierarchy, renumber").option("--execute", "Actually perform the cleanup (default is dry-run)").option("--no-renumber", "Skip renumbering sessions after deletions").option("--no-reindex", "Skip triggering memory re-index after moves").action(async (projectSlug, opts) => {
|
|
20807
|
-
const { getRegistryBackend } = await import("./factory-
|
|
20765
|
+
const { getRegistryBackend } = await import("./factory-DjtXElOI.mjs");
|
|
20808
20766
|
const registryBackend = await getRegistryBackend();
|
|
20809
20767
|
const dryRun = !opts.execute;
|
|
20810
20768
|
const skipReindex = opts.reindex === false;
|
|
@@ -20874,7 +20832,7 @@ function finalizeNote(notePath) {
|
|
|
20874
20832
|
}
|
|
20875
20833
|
async function cmdEnd(opts) {
|
|
20876
20834
|
await cmdPause(opts);
|
|
20877
|
-
const { getRegistryBackend } = await import("./factory-
|
|
20835
|
+
const { getRegistryBackend } = await import("./factory-DjtXElOI.mjs");
|
|
20878
20836
|
const registryBackend = await getRegistryBackend();
|
|
20879
20837
|
const cwd = process.cwd();
|
|
20880
20838
|
const project = await registryBackend.findProjectByCwdPrefix(cwd);
|
|
@@ -21322,7 +21280,7 @@ async function cmdFind(query, opts) {
|
|
|
21322
21280
|
*/
|
|
21323
21281
|
async function getProjects(includeArchived) {
|
|
21324
21282
|
try {
|
|
21325
|
-
const { getRegistryBackend } = await import("./factory-
|
|
21283
|
+
const { getRegistryBackend } = await import("./factory-DjtXElOI.mjs");
|
|
21326
21284
|
const rows = await (await getRegistryBackend()).listProjectsWithSessionStats();
|
|
21327
21285
|
return includeArchived ? rows : rows.filter((p) => p.status === "active");
|
|
21328
21286
|
} catch {
|
|
@@ -21796,7 +21754,7 @@ async function cmdPick(opts = {}) {
|
|
|
21796
21754
|
const onRemove = async (rec) => {
|
|
21797
21755
|
if (!rec.slug) return false;
|
|
21798
21756
|
try {
|
|
21799
|
-
const { getRegistryBackend } = await import("./factory-
|
|
21757
|
+
const { getRegistryBackend } = await import("./factory-DjtXElOI.mjs");
|
|
21800
21758
|
const registryBackend = await getRegistryBackend();
|
|
21801
21759
|
const project = await registryBackend.getProjectBySlug(rec.slug);
|
|
21802
21760
|
if (!project || project.status !== "active") return false;
|
|
@@ -22081,4 +22039,4 @@ claude() {
|
|
|
22081
22039
|
|
|
22082
22040
|
//#endregion
|
|
22083
22041
|
export { drainStdio as n, buildProgram as t };
|
|
22084
|
-
//# sourceMappingURL=program-
|
|
22042
|
+
//# sourceMappingURL=program-cWqZI0_L.mjs.map
|