@getrift/rift 0.1.0-beta.1 → 0.1.0-beta.11
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 +154 -0
- package/dist/src/auth/keychain.d.ts +9 -0
- package/dist/src/auth/keychain.d.ts.map +1 -1
- package/dist/src/auth/keychain.js +37 -0
- package/dist/src/auth/keychain.js.map +1 -1
- package/dist/src/capture/recover-quarantine.d.ts +221 -0
- package/dist/src/capture/recover-quarantine.d.ts.map +1 -0
- package/dist/src/capture/recover-quarantine.js +453 -0
- package/dist/src/capture/recover-quarantine.js.map +1 -0
- package/dist/src/cli/commands/backfill.d.ts.map +1 -1
- package/dist/src/cli/commands/backfill.js +5 -2
- package/dist/src/cli/commands/backfill.js.map +1 -1
- package/dist/src/cli/commands/capture-recover.d.ts +12 -0
- package/dist/src/cli/commands/capture-recover.d.ts.map +1 -0
- package/dist/src/cli/commands/capture-recover.js +120 -0
- package/dist/src/cli/commands/capture-recover.js.map +1 -0
- package/dist/src/cli/commands/capture.d.ts.map +1 -1
- package/dist/src/cli/commands/capture.js +10 -4
- package/dist/src/cli/commands/capture.js.map +1 -1
- package/dist/src/cli/commands/feedback.d.ts.map +1 -1
- package/dist/src/cli/commands/feedback.js +6 -2
- package/dist/src/cli/commands/feedback.js.map +1 -1
- package/dist/src/cli/commands/mcp-install.js +5 -2
- package/dist/src/cli/commands/mcp-install.js.map +1 -1
- package/dist/src/cli/commands/onboard.d.ts +24 -0
- package/dist/src/cli/commands/onboard.d.ts.map +1 -1
- package/dist/src/cli/commands/onboard.js +119 -21
- package/dist/src/cli/commands/onboard.js.map +1 -1
- package/dist/src/cli/commands/rebuild.d.ts.map +1 -1
- package/dist/src/cli/commands/rebuild.js +6 -3
- package/dist/src/cli/commands/rebuild.js.map +1 -1
- package/dist/src/cli/commands/review.d.ts.map +1 -1
- package/dist/src/cli/commands/review.js +22 -7
- package/dist/src/cli/commands/review.js.map +1 -1
- package/dist/src/cli/commands/search.d.ts.map +1 -1
- package/dist/src/cli/commands/search.js +28 -4
- package/dist/src/cli/commands/search.js.map +1 -1
- package/dist/src/cli/commands/status.d.ts.map +1 -1
- package/dist/src/cli/commands/status.js +48 -2
- package/dist/src/cli/commands/status.js.map +1 -1
- package/dist/src/cli/commands/token-issue.d.ts.map +1 -1
- package/dist/src/cli/commands/token-issue.js +9 -1
- package/dist/src/cli/commands/token-issue.js.map +1 -1
- package/dist/src/cli/commands/triage.d.ts.map +1 -1
- package/dist/src/cli/commands/triage.js +7 -5
- package/dist/src/cli/commands/triage.js.map +1 -1
- package/dist/src/cli/commands/update.d.ts +26 -0
- package/dist/src/cli/commands/update.d.ts.map +1 -0
- package/dist/src/cli/commands/update.js +130 -0
- package/dist/src/cli/commands/update.js.map +1 -0
- package/dist/src/cli/default-config-path.d.ts +15 -0
- package/dist/src/cli/default-config-path.d.ts.map +1 -0
- package/dist/src/cli/default-config-path.js +27 -0
- package/dist/src/cli/default-config-path.js.map +1 -0
- package/dist/src/cli/http-client.d.ts +56 -1
- package/dist/src/cli/http-client.d.ts.map +1 -1
- package/dist/src/cli/http-client.js +161 -6
- package/dist/src/cli/http-client.js.map +1 -1
- package/dist/src/cli/index.d.ts.map +1 -1
- package/dist/src/cli/index.js +25 -6
- package/dist/src/cli/index.js.map +1 -1
- package/dist/src/cli/status/friend-header.d.ts.map +1 -1
- package/dist/src/cli/status/friend-header.js +117 -7
- package/dist/src/cli/status/friend-header.js.map +1 -1
- package/dist/src/ingestion/inbox-core/conversation-fingerprint.d.ts +2 -0
- package/dist/src/ingestion/inbox-core/conversation-fingerprint.d.ts.map +1 -0
- package/dist/src/ingestion/inbox-core/conversation-fingerprint.js +27 -0
- package/dist/src/ingestion/inbox-core/conversation-fingerprint.js.map +1 -0
- package/dist/src/ingestion/inbox-core/conversation-key.d.ts +2 -0
- package/dist/src/ingestion/inbox-core/conversation-key.d.ts.map +1 -0
- package/dist/src/ingestion/inbox-core/conversation-key.js +31 -0
- package/dist/src/ingestion/inbox-core/conversation-key.js.map +1 -0
- package/dist/src/ingestion/inbox-core/extensions.d.ts +3 -0
- package/dist/src/ingestion/inbox-core/extensions.d.ts.map +1 -0
- package/dist/src/ingestion/inbox-core/extensions.js +16 -0
- package/dist/src/ingestion/inbox-core/extensions.js.map +1 -0
- package/dist/src/ingestion/inbox-core/idempotency.d.ts +2 -0
- package/dist/src/ingestion/inbox-core/idempotency.d.ts.map +1 -0
- package/dist/src/ingestion/inbox-core/idempotency.js +22 -0
- package/dist/src/ingestion/inbox-core/idempotency.js.map +1 -0
- package/dist/src/ingestion/inbox-core/index.d.ts +20 -0
- package/dist/src/ingestion/inbox-core/index.d.ts.map +1 -0
- package/dist/src/ingestion/inbox-core/index.js +20 -0
- package/dist/src/ingestion/inbox-core/index.js.map +1 -0
- package/dist/src/ingestion/inbox-core/source-detection.d.ts +2 -0
- package/dist/src/ingestion/inbox-core/source-detection.d.ts.map +1 -0
- package/dist/src/ingestion/inbox-core/source-detection.js +23 -0
- package/dist/src/ingestion/inbox-core/source-detection.js.map +1 -0
- package/dist/src/ingestion/inbox-core/source-sniffer.d.ts +11 -0
- package/dist/src/ingestion/inbox-core/source-sniffer.d.ts.map +1 -0
- package/dist/src/ingestion/inbox-core/source-sniffer.js +69 -0
- package/dist/src/ingestion/inbox-core/source-sniffer.js.map +1 -0
- package/dist/src/ingestion/inbox-core/zip-sniffer.d.ts +70 -0
- package/dist/src/ingestion/inbox-core/zip-sniffer.d.ts.map +1 -0
- package/dist/src/ingestion/inbox-core/zip-sniffer.js +161 -0
- package/dist/src/ingestion/inbox-core/zip-sniffer.js.map +1 -0
- package/dist/src/ingestion/inbox-watcher.d.ts.map +1 -1
- package/dist/src/ingestion/inbox-watcher.js +34 -50
- package/dist/src/ingestion/inbox-watcher.js.map +1 -1
- package/dist/src/ingestion/indexer.d.ts +7 -0
- package/dist/src/ingestion/indexer.d.ts.map +1 -1
- package/dist/src/ingestion/indexer.js +36 -2
- package/dist/src/ingestion/indexer.js.map +1 -1
- package/dist/src/ingestion/metadata-extraction.d.ts +8 -5
- package/dist/src/ingestion/metadata-extraction.d.ts.map +1 -1
- package/dist/src/ingestion/metadata-extraction.js +24 -5
- package/dist/src/ingestion/metadata-extraction.js.map +1 -1
- package/dist/src/ingestion/skip-quarantine.d.ts +10 -0
- package/dist/src/ingestion/skip-quarantine.d.ts.map +1 -0
- package/dist/src/ingestion/skip-quarantine.js +35 -0
- package/dist/src/ingestion/skip-quarantine.js.map +1 -0
- package/dist/src/jobs/handlers/compact.d.ts.map +1 -1
- package/dist/src/jobs/handlers/compact.js +25 -4
- package/dist/src/jobs/handlers/compact.js.map +1 -1
- package/dist/src/jobs/handlers/ingest.d.ts.map +1 -1
- package/dist/src/jobs/handlers/ingest.js +214 -36
- package/dist/src/jobs/handlers/ingest.js.map +1 -1
- package/dist/src/jobs/handlers/reconcile.d.ts.map +1 -1
- package/dist/src/jobs/handlers/reconcile.js +30 -8
- package/dist/src/jobs/handlers/reconcile.js.map +1 -1
- package/dist/src/jobs/handlers/reindex.d.ts.map +1 -1
- package/dist/src/jobs/handlers/reindex.js +12 -2
- package/dist/src/jobs/handlers/reindex.js.map +1 -1
- package/dist/src/jobs/handlers/save.d.ts.map +1 -1
- package/dist/src/jobs/handlers/save.js +9 -2
- package/dist/src/jobs/handlers/save.js.map +1 -1
- package/dist/src/jobs/queue.d.ts +11 -0
- package/dist/src/jobs/queue.d.ts.map +1 -1
- package/dist/src/jobs/queue.js +18 -0
- package/dist/src/jobs/queue.js.map +1 -1
- package/dist/src/jobs/worker-entry.d.ts.map +1 -1
- package/dist/src/jobs/worker-entry.js +2 -0
- package/dist/src/jobs/worker-entry.js.map +1 -1
- package/dist/src/main.js +36 -4
- package/dist/src/main.js.map +1 -1
- package/dist/src/mcp/errors.d.ts.map +1 -1
- package/dist/src/mcp/errors.js +20 -1
- package/dist/src/mcp/errors.js.map +1 -1
- package/dist/src/mcp/tools/context-pack.d.ts.map +1 -1
- package/dist/src/mcp/tools/context-pack.js +5 -2
- package/dist/src/mcp/tools/context-pack.js.map +1 -1
- package/dist/src/mcp/tools/search.d.ts +6 -2
- package/dist/src/mcp/tools/search.d.ts.map +1 -1
- package/dist/src/mcp/tools/search.js +34 -4
- package/dist/src/mcp/tools/search.js.map +1 -1
- package/dist/src/observability/embedding-events.d.ts +52 -0
- package/dist/src/observability/embedding-events.d.ts.map +1 -0
- package/dist/src/observability/embedding-events.js +149 -0
- package/dist/src/observability/embedding-events.js.map +1 -0
- package/dist/src/observability/index-events.d.ts +70 -0
- package/dist/src/observability/index-events.d.ts.map +1 -0
- package/dist/src/observability/index-events.js +148 -0
- package/dist/src/observability/index-events.js.map +1 -0
- package/dist/src/observability/tool-usage-stats.d.ts +69 -4
- package/dist/src/observability/tool-usage-stats.d.ts.map +1 -1
- package/dist/src/observability/tool-usage-stats.js +88 -31
- package/dist/src/observability/tool-usage-stats.js.map +1 -1
- package/dist/src/observability/tool-usage.d.ts +100 -7
- package/dist/src/observability/tool-usage.d.ts.map +1 -1
- package/dist/src/observability/tool-usage.js +196 -33
- package/dist/src/observability/tool-usage.js.map +1 -1
- package/dist/src/observability/version-check.d.ts +70 -0
- package/dist/src/observability/version-check.d.ts.map +1 -0
- package/dist/src/observability/version-check.js +197 -0
- package/dist/src/observability/version-check.js.map +1 -0
- package/dist/src/providers/ollama-embed.d.ts +2 -1
- package/dist/src/providers/ollama-embed.d.ts.map +1 -1
- package/dist/src/providers/ollama-embed.js +1 -0
- package/dist/src/providers/ollama-embed.js.map +1 -1
- package/dist/src/providers/openai-metadata-extraction.d.ts +3 -3
- package/dist/src/providers/openai-metadata-extraction.d.ts.map +1 -1
- package/dist/src/providers/openai-metadata-extraction.js +18 -3
- package/dist/src/providers/openai-metadata-extraction.js.map +1 -1
- package/dist/src/providers/stub.d.ts +2 -0
- package/dist/src/providers/stub.d.ts.map +1 -1
- package/dist/src/providers/stub.js +2 -0
- package/dist/src/providers/stub.js.map +1 -1
- package/dist/src/providers/types.d.ts +11 -0
- package/dist/src/providers/types.d.ts.map +1 -1
- package/dist/src/providers/voyage.d.ts +2 -1
- package/dist/src/providers/voyage.d.ts.map +1 -1
- package/dist/src/providers/voyage.js +1 -0
- package/dist/src/providers/voyage.js.map +1 -1
- package/dist/src/retrieval/compact.d.ts +115 -2
- package/dist/src/retrieval/compact.d.ts.map +1 -1
- package/dist/src/retrieval/compact.js +154 -5
- package/dist/src/retrieval/compact.js.map +1 -1
- package/dist/src/retrieval/context-pack.d.ts +8 -0
- package/dist/src/retrieval/context-pack.d.ts.map +1 -1
- package/dist/src/retrieval/context-pack.js +17 -2
- package/dist/src/retrieval/context-pack.js.map +1 -1
- package/dist/src/server/app.d.ts.map +1 -1
- package/dist/src/server/app.js +67 -1
- package/dist/src/server/app.js.map +1 -1
- package/dist/src/server/routes/friend-status.d.ts +202 -3
- package/dist/src/server/routes/friend-status.d.ts.map +1 -1
- package/dist/src/server/routes/friend-status.js +290 -7
- package/dist/src/server/routes/friend-status.js.map +1 -1
- package/dist/src/server/routes/mcp-usage.d.ts +4 -4
- package/dist/src/server/routes/search.d.ts.map +1 -1
- package/dist/src/server/routes/search.js +144 -24
- package/dist/src/server/routes/search.js.map +1 -1
- package/dist/src/storage/rebuild.d.ts +14 -1
- package/dist/src/storage/rebuild.d.ts.map +1 -1
- package/dist/src/storage/rebuild.js +160 -34
- package/dist/src/storage/rebuild.js.map +1 -1
- package/package.json +1 -1
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* and the capability map is omitted.
|
|
12
12
|
*/
|
|
13
13
|
import { Command } from "commander";
|
|
14
|
-
import { createHttpClient, readToken, resolveBaseUrl, CliError, } from "../http-client.js";
|
|
14
|
+
import { createHttpClient, probeDefaultDaemonHealth, readToken, resolveBaseUrl, CliError, } from "../http-client.js";
|
|
15
15
|
import { printError, printJson, printText } from "../output.js";
|
|
16
16
|
import { renderFriendHeader } from "../status/friend-header.js";
|
|
17
17
|
import { readLocalSignals } from "../status/local-signals.js";
|
|
@@ -21,7 +21,22 @@ export function makeStatusCommand() {
|
|
|
21
21
|
.action(async (_opts, cmd) => {
|
|
22
22
|
const globalOpts = cmd.optsWithGlobals();
|
|
23
23
|
try {
|
|
24
|
-
|
|
24
|
+
// Per A-2.3a/A-2.3b: status is the only diagnostic command that
|
|
25
|
+
// must NOT hard-fail on missing config — friends will run it
|
|
26
|
+
// before/after `rift onboard`. Probe /health directly when
|
|
27
|
+
// resolveBaseUrl can't load a config; render a no-config-yet
|
|
28
|
+
// header instead of erroring out.
|
|
29
|
+
let baseUrl;
|
|
30
|
+
try {
|
|
31
|
+
baseUrl = resolveBaseUrl(globalOpts.config);
|
|
32
|
+
}
|
|
33
|
+
catch (err) {
|
|
34
|
+
if (err instanceof CliError && err.code === "not_found") {
|
|
35
|
+
await renderNoConfigStatus(globalOpts.json, globalOpts.config);
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
throw err;
|
|
39
|
+
}
|
|
25
40
|
const token = await readToken();
|
|
26
41
|
if (!token) {
|
|
27
42
|
printError("No auth token. Run: rift token issue");
|
|
@@ -86,4 +101,35 @@ async function safeFetchStatusMarkdown(client) {
|
|
|
86
101
|
return null;
|
|
87
102
|
}
|
|
88
103
|
}
|
|
104
|
+
/**
|
|
105
|
+
* No-config branch for `rift status`. Per A-2.3a/A-2.3b: render the
|
|
106
|
+
* daemon's actual up/down state (probed at the well-known port without
|
|
107
|
+
* reading any config) plus a "config missing — run rift onboard" line.
|
|
108
|
+
* Don't throw, don't `process.exitCode = 1` — this is the expected
|
|
109
|
+
* pre-onboard friend experience.
|
|
110
|
+
*/
|
|
111
|
+
async function renderNoConfigStatus(asJson, configPath) {
|
|
112
|
+
const probe = await probeDefaultDaemonHealth();
|
|
113
|
+
const summaryLine = probe.up
|
|
114
|
+
? "config missing — run rift onboard (daemon up at 127.0.0.1:3577)"
|
|
115
|
+
: "daemon down — run rift onboard, or check launchctl print gui/$UID/com.getrift.daemon";
|
|
116
|
+
const lines = [
|
|
117
|
+
`Rift · daemon: ${probe.up ? "running" : "down"} · port 3577`,
|
|
118
|
+
`Config: ${summaryLine}`,
|
|
119
|
+
` expected at: ${configPath}`,
|
|
120
|
+
];
|
|
121
|
+
if (asJson) {
|
|
122
|
+
printJson({
|
|
123
|
+
header: lines.join("\n"),
|
|
124
|
+
friend: null,
|
|
125
|
+
capability_map: null,
|
|
126
|
+
config_missing: true,
|
|
127
|
+
config_expected_at: configPath,
|
|
128
|
+
daemon_up: probe.up,
|
|
129
|
+
});
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
for (const line of lines)
|
|
133
|
+
printText(line);
|
|
134
|
+
}
|
|
89
135
|
//# sourceMappingURL=status.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../../src/cli/commands/status.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACL,gBAAgB,EAChB,SAAS,EACT,cAAc,EACd,QAAQ,GACT,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAG9D,MAAM,UAAU,iBAAiB;IAC/B,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC;SACzB,WAAW,CAAC,yDAAyD,CAAC;SACtE,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QAC3B,MAAM,UAAU,GAAG,GAAG,CAAC,eAAe,EAGrC,CAAC;QACF,IAAI,CAAC;YACH,
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../../src/cli/commands/status.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-issue.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/token-issue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"token-issue.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/token-issue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,qBAAqB,IAAI,OAAO,CA2B/C"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Command } from "commander";
|
|
2
2
|
import { issueToken } from "../token.js";
|
|
3
|
+
import { requireExistingConfigPath } from "../http-client.js";
|
|
3
4
|
import { printError, printText } from "../output.js";
|
|
4
5
|
export function makeTokenIssueCommand() {
|
|
5
6
|
return new Command("issue")
|
|
@@ -7,7 +8,14 @@ export function makeTokenIssueCommand() {
|
|
|
7
8
|
.action(async (_opts, cmd) => {
|
|
8
9
|
const globalOpts = cmd.optsWithGlobals();
|
|
9
10
|
try {
|
|
10
|
-
|
|
11
|
+
// Per A-2.2: validate the config exists before calling
|
|
12
|
+
// issueToken (which loads it without canonical error mapping).
|
|
13
|
+
// This is especially critical because onboard's keychain-locked
|
|
14
|
+
// recovery copy now points users at `rift token issue`; if
|
|
15
|
+
// *that* command itself crashes with raw ENOENT on a missing
|
|
16
|
+
// config, the recovery loop is broken.
|
|
17
|
+
const configPath = requireExistingConfigPath(globalOpts);
|
|
18
|
+
const result = await issueToken(configPath);
|
|
11
19
|
printText(`v${result.version}: ${result.token}`);
|
|
12
20
|
if (result.signal.signaled) {
|
|
13
21
|
process.stderr.write("Daemon notified (SIGHUP).\n");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-issue.js","sourceRoot":"","sources":["../../../../src/cli/commands/token-issue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAErD,MAAM,UAAU,qBAAqB;IACnC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;SACxB,WAAW,CAAC,gDAAgD,CAAC;SAC7D,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QAC3B,MAAM,UAAU,GAAG,GAAG,CAAC,eAAe,EAAwB,CAAC;QAC/D,IAAI,CAAC;YACH,
|
|
1
|
+
{"version":3,"file":"token-issue.js","sourceRoot":"","sources":["../../../../src/cli/commands/token-issue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAErD,MAAM,UAAU,qBAAqB;IACnC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;SACxB,WAAW,CAAC,gDAAgD,CAAC;SAC7D,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QAC3B,MAAM,UAAU,GAAG,GAAG,CAAC,eAAe,EAAwB,CAAC;QAC/D,IAAI,CAAC;YACH,uDAAuD;YACvD,+DAA+D;YAC/D,gEAAgE;YAChE,2DAA2D;YAC3D,6DAA6D;YAC7D,uCAAuC;YACvC,MAAM,UAAU,GAAG,yBAAyB,CAAC,UAAU,CAAC,CAAC;YACzD,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC;YAC5C,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,KAAK,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;YACjD,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;gBAC3B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;YACtD,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,YAAY,MAAM,CAAC,MAAM,CAAC,OAAO,+CAA+C,CACjF,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,UAAU,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAC7D,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"triage.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/triage.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"triage.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/triage.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA2CpC,wBAAgB,iBAAiB,IAAI,OAAO,CA4H3C"}
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
import fs from "node:fs";
|
|
13
13
|
import path from "node:path";
|
|
14
14
|
import { Command } from "commander";
|
|
15
|
-
import { createHttpClient, readToken, CliError } from "../http-client.js";
|
|
15
|
+
import { createHttpClient, readToken, CliError, requireExistingConfigPath, } from "../http-client.js";
|
|
16
16
|
import { pollJob } from "../job-poller.js";
|
|
17
17
|
import { printError, printJson, isJobFailure } from "../output.js";
|
|
18
18
|
import { loadConfig } from "../../config/loader.js";
|
|
@@ -25,10 +25,12 @@ export function makeTriageCommand() {
|
|
|
25
25
|
.action(async (opts, cmd) => {
|
|
26
26
|
const globalOpts = cmd.optsWithGlobals();
|
|
27
27
|
try {
|
|
28
|
-
//
|
|
29
|
-
//
|
|
30
|
-
//
|
|
31
|
-
|
|
28
|
+
// Per A-2.2 / A-2.3a: route through requireExistingConfigPath so
|
|
29
|
+
// missing config produces the canonical "Config not found at
|
|
30
|
+
// <path>. Run rift onboard…" CliError, not a raw ENOENT trace.
|
|
31
|
+
// Also resolves --config / RIFT_CONFIG / default uniformly.
|
|
32
|
+
const configPath = requireExistingConfigPath(globalOpts);
|
|
33
|
+
const config = loadConfig(configPath);
|
|
32
34
|
const baseUrl = `http://${config.server.host}:${config.server.port}`;
|
|
33
35
|
const dataDir = config.data_paths.data_dir;
|
|
34
36
|
const token = await readToken();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"triage.js","sourceRoot":"","sources":["../../../../src/cli/commands/triage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,
|
|
1
|
+
{"version":3,"file":"triage.js","sourceRoot":"","sources":["../../../../src/cli/commands/triage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
import { kickstartDaemon, waitForHealth } from "../../onboarding/daemon-control.js";
|
|
3
|
+
export interface UpdateRunner {
|
|
4
|
+
/**
|
|
5
|
+
* Run `npm install -g <spec>`. Returns the exit code so the command
|
|
6
|
+
* can decide whether to retry with sudo. stderr/stdout pass through
|
|
7
|
+
* to the friend's terminal so progress is visible.
|
|
8
|
+
*/
|
|
9
|
+
runNpmInstall: (spec: string, useSudo: boolean) => Promise<number>;
|
|
10
|
+
/** Kickstart the daemon. Defaults to the launchctl helper. */
|
|
11
|
+
kickstart: typeof kickstartDaemon;
|
|
12
|
+
/** Poll /health. Defaults to the onboarding helper. */
|
|
13
|
+
waitForHealth: typeof waitForHealth;
|
|
14
|
+
}
|
|
15
|
+
export declare function makeUpdateCommand(): Command;
|
|
16
|
+
export interface UpdateResult {
|
|
17
|
+
ok: boolean;
|
|
18
|
+
step?: "npm" | "kickstart" | "health";
|
|
19
|
+
transcript: string[];
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Pure orchestration so tests can inject a mock runner. The function
|
|
23
|
+
* always returns — exit-code mapping is the caller's job.
|
|
24
|
+
*/
|
|
25
|
+
export declare function runUpdate(runner: UpdateRunner): Promise<UpdateResult>;
|
|
26
|
+
//# sourceMappingURL=update.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/update.ts"],"names":[],"mappings":"AAgCA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACL,eAAe,EACf,aAAa,EACd,MAAM,oCAAoC,CAAC;AAO5C,MAAM,WAAW,YAAY;IAC3B;;;;OAIG;IACH,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACnE,8DAA8D;IAC9D,SAAS,EAAE,OAAO,eAAe,CAAC;IAClC,uDAAuD;IACvD,aAAa,EAAE,OAAO,aAAa,CAAC;CACrC;AAQD,wBAAgB,iBAAiB,IAAI,OAAO,CAa3C;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,OAAO,CAAC;IACZ,IAAI,CAAC,EAAE,KAAK,GAAG,WAAW,GAAG,QAAQ,CAAC;IACtC,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED;;;GAGG;AACH,wBAAsB,SAAS,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CAwD3E"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `rift update` — friend-readable in-place upgrade for the npm-installed CLI.
|
|
3
|
+
*
|
|
4
|
+
* Steps (in order, each one printed):
|
|
5
|
+
* 1. `npm install -g @getrift/rift@beta` — pulls the latest beta tag.
|
|
6
|
+
* Falls back to `sudo npm install -g …` exactly like scripts/install.sh
|
|
7
|
+
* does, so friends who installed via the one-liner without nvm don't
|
|
8
|
+
* hit a permission wall.
|
|
9
|
+
* 2. `launchctl kickstart -k gui/$UID/com.getrift.daemon` — restarts the
|
|
10
|
+
* daemon so it picks up the new code on disk.
|
|
11
|
+
* 3. Poll `/health` until 200 (or timeout) — proves the new build can
|
|
12
|
+
* actually start.
|
|
13
|
+
*
|
|
14
|
+
* Failure contract:
|
|
15
|
+
* - npm install failure (step 1): the previous install is left in place.
|
|
16
|
+
* `npm install -g` with the same dist-tag is atomic enough here — npm
|
|
17
|
+
* replaces `bin/rift` only after a successful tarball install.
|
|
18
|
+
* - Kickstart or /health failure (steps 2–3): the new package is already
|
|
19
|
+
* installed on disk; only daemon recovery is needed. The transcript
|
|
20
|
+
* says so explicitly and points at the manual recovery action.
|
|
21
|
+
* In every branch the output is a friend-readable error pointing at the
|
|
22
|
+
* next recovery step; we never drop into "your install is broken" territory.
|
|
23
|
+
*
|
|
24
|
+
* Deliberately not in scope here:
|
|
25
|
+
* - No publishing.
|
|
26
|
+
* - No clean-Mac validation.
|
|
27
|
+
* - No Sparkle / background self-update.
|
|
28
|
+
* - No telemetry. The npm-registry probe lives in the daemon's daily
|
|
29
|
+
* loop (see src/observability/version-check.ts); this command does
|
|
30
|
+
* not write to that snapshot.
|
|
31
|
+
*/
|
|
32
|
+
import { spawn } from "node:child_process";
|
|
33
|
+
import { Command } from "commander";
|
|
34
|
+
import { kickstartDaemon, waitForHealth, } from "../../onboarding/daemon-control.js";
|
|
35
|
+
import { printJson, printText } from "../output.js";
|
|
36
|
+
const RIFT_PACKAGE_SPEC = "@getrift/rift@beta";
|
|
37
|
+
const DAEMON_BASE_URL = "http://127.0.0.1:3577";
|
|
38
|
+
const HEALTH_TIMEOUT_MS = 30_000;
|
|
39
|
+
const defaultRunner = {
|
|
40
|
+
runNpmInstall: defaultNpmInstall,
|
|
41
|
+
kickstart: kickstartDaemon,
|
|
42
|
+
waitForHealth,
|
|
43
|
+
};
|
|
44
|
+
export function makeUpdateCommand() {
|
|
45
|
+
return new Command("update")
|
|
46
|
+
.description("Reinstall the latest @getrift/rift@beta and restart the daemon")
|
|
47
|
+
.action(async (_opts, cmd) => {
|
|
48
|
+
const globalOpts = cmd.optsWithGlobals();
|
|
49
|
+
const result = await runUpdate(defaultRunner);
|
|
50
|
+
if (globalOpts.json) {
|
|
51
|
+
printJson(result);
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
for (const line of result.transcript)
|
|
55
|
+
printText(line);
|
|
56
|
+
}
|
|
57
|
+
if (!result.ok)
|
|
58
|
+
process.exitCode = 1;
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Pure orchestration so tests can inject a mock runner. The function
|
|
63
|
+
* always returns — exit-code mapping is the caller's job.
|
|
64
|
+
*/
|
|
65
|
+
export async function runUpdate(runner) {
|
|
66
|
+
const transcript = [];
|
|
67
|
+
const say = (line) => {
|
|
68
|
+
transcript.push(line);
|
|
69
|
+
};
|
|
70
|
+
// --- Step 1: npm install ---
|
|
71
|
+
say(`==> Installing ${RIFT_PACKAGE_SPEC} via npm`);
|
|
72
|
+
let npmCode = await runner.runNpmInstall(RIFT_PACKAGE_SPEC, false);
|
|
73
|
+
if (npmCode !== 0) {
|
|
74
|
+
// npm exits non-zero on a permission denied error; mirror install.sh
|
|
75
|
+
// and retry under sudo so a non-nvm user on a system Node doesn't get
|
|
76
|
+
// stuck. The sudo prompt itself surfaces inline in the friend's
|
|
77
|
+
// terminal — we don't try to suppress it.
|
|
78
|
+
say(" npm install failed without sudo — retrying with sudo");
|
|
79
|
+
npmCode = await runner.runNpmInstall(RIFT_PACKAGE_SPEC, true);
|
|
80
|
+
}
|
|
81
|
+
if (npmCode !== 0) {
|
|
82
|
+
say("");
|
|
83
|
+
say("Update failed at step 1 (npm install).");
|
|
84
|
+
say("Your existing Rift install is unchanged.");
|
|
85
|
+
say(`Try manually: npm install -g ${RIFT_PACKAGE_SPEC}`);
|
|
86
|
+
return { ok: false, step: "npm", transcript };
|
|
87
|
+
}
|
|
88
|
+
say(" npm install completed.");
|
|
89
|
+
// --- Step 2: kickstart daemon ---
|
|
90
|
+
say("==> Restarting the Rift daemon");
|
|
91
|
+
const kick = await runner.kickstart();
|
|
92
|
+
if (kick.status !== "ok") {
|
|
93
|
+
say("");
|
|
94
|
+
say("Update installed, but the daemon did not restart cleanly.");
|
|
95
|
+
if (kick.hint)
|
|
96
|
+
say(` ${kick.hint}`);
|
|
97
|
+
say("Try: launchctl kickstart -k gui/$UID/com.getrift.daemon");
|
|
98
|
+
return { ok: false, step: "kickstart", transcript };
|
|
99
|
+
}
|
|
100
|
+
say(" Daemon kickstarted.");
|
|
101
|
+
// --- Step 3: wait for /health ---
|
|
102
|
+
say("==> Waiting for the daemon to answer /health");
|
|
103
|
+
const health = await runner.waitForHealth({
|
|
104
|
+
baseUrl: DAEMON_BASE_URL,
|
|
105
|
+
timeoutMs: HEALTH_TIMEOUT_MS,
|
|
106
|
+
});
|
|
107
|
+
if (!health.ok) {
|
|
108
|
+
say("");
|
|
109
|
+
say("Update installed and daemon kickstarted, but /health did not return 200.");
|
|
110
|
+
say(` ${health.reason}`);
|
|
111
|
+
say("Inspect with: rift status");
|
|
112
|
+
return { ok: false, step: "health", transcript };
|
|
113
|
+
}
|
|
114
|
+
say(` Daemon healthy (uptime ${health.uptimeSeconds}s).`);
|
|
115
|
+
say("");
|
|
116
|
+
say("Rift updated. Run `rift status` to confirm the new version.");
|
|
117
|
+
return { ok: true, transcript };
|
|
118
|
+
}
|
|
119
|
+
function defaultNpmInstall(spec, useSudo) {
|
|
120
|
+
return new Promise((resolve) => {
|
|
121
|
+
const cmd = useSudo ? "sudo" : "npm";
|
|
122
|
+
const args = useSudo
|
|
123
|
+
? ["npm", "install", "-g", spec]
|
|
124
|
+
: ["install", "-g", spec];
|
|
125
|
+
const child = spawn(cmd, args, { stdio: "inherit" });
|
|
126
|
+
child.on("error", () => resolve(1));
|
|
127
|
+
child.on("close", (code) => resolve(code ?? 1));
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=update.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../../src/cli/commands/update.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACL,eAAe,EACf,aAAa,GACd,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAc,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEhE,MAAM,iBAAiB,GAAG,oBAAoB,CAAC;AAC/C,MAAM,eAAe,GAAG,uBAAuB,CAAC;AAChD,MAAM,iBAAiB,GAAG,MAAM,CAAC;AAejC,MAAM,aAAa,GAAiB;IAClC,aAAa,EAAE,iBAAiB;IAChC,SAAS,EAAE,eAAe;IAC1B,aAAa;CACd,CAAC;AAEF,MAAM,UAAU,iBAAiB;IAC/B,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC;SACzB,WAAW,CAAC,gEAAgE,CAAC;SAC7E,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QAC3B,MAAM,UAAU,GAAG,GAAG,CAAC,eAAe,EAAuB,CAAC;QAC9D,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,aAAa,CAAC,CAAC;QAC9C,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC;YACpB,SAAS,CAAC,MAAM,CAAC,CAAC;QACpB,CAAC;aAAM,CAAC;YACN,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,UAAU;gBAAE,SAAS,CAAC,IAAI,CAAC,CAAC;QACxD,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;AACP,CAAC;AAQD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,MAAoB;IAClD,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,MAAM,GAAG,GAAG,CAAC,IAAY,EAAQ,EAAE;QACjC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC,CAAC;IAEF,8BAA8B;IAC9B,GAAG,CAAC,kBAAkB,iBAAiB,UAAU,CAAC,CAAC;IACnD,IAAI,OAAO,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;IACnE,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;QAClB,qEAAqE;QACrE,sEAAsE;QACtE,gEAAgE;QAChE,0CAA0C;QAC1C,GAAG,CAAC,0DAA0D,CAAC,CAAC;QAChE,OAAO,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;IAChE,CAAC;IACD,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;QAClB,GAAG,CAAC,EAAE,CAAC,CAAC;QACR,GAAG,CAAC,wCAAwC,CAAC,CAAC;QAC9C,GAAG,CAAC,0CAA0C,CAAC,CAAC;QAChD,GAAG,CAAC,gCAAgC,iBAAiB,EAAE,CAAC,CAAC;QACzD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;IAChD,CAAC;IACD,GAAG,CAAC,4BAA4B,CAAC,CAAC;IAElC,mCAAmC;IACnC,GAAG,CAAC,gCAAgC,CAAC,CAAC;IACtC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,SAAS,EAAE,CAAC;IACtC,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;QACzB,GAAG,CAAC,EAAE,CAAC,CAAC;QACR,GAAG,CAAC,2DAA2D,CAAC,CAAC;QACjE,IAAI,IAAI,CAAC,IAAI;YAAE,GAAG,CAAC,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACvC,GAAG,CAAC,yDAAyD,CAAC,CAAC;QAC/D,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;IACtD,CAAC;IACD,GAAG,CAAC,yBAAyB,CAAC,CAAC;IAE/B,mCAAmC;IACnC,GAAG,CAAC,8CAA8C,CAAC,CAAC;IACpD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC;QACxC,OAAO,EAAE,eAAe;QACxB,SAAS,EAAE,iBAAiB;KAC7B,CAAC,CAAC;IACH,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACf,GAAG,CAAC,EAAE,CAAC,CAAC;QACR,GAAG,CAAC,0EAA0E,CAAC,CAAC;QAChF,GAAG,CAAC,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5B,GAAG,CAAC,2BAA2B,CAAC,CAAC;QACjC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;IACnD,CAAC;IACD,GAAG,CAAC,8BAA8B,MAAM,CAAC,aAAa,KAAK,CAAC,CAAC;IAE7D,GAAG,CAAC,EAAE,CAAC,CAAC;IACR,GAAG,CAAC,6DAA6D,CAAC,CAAC;IACnE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;AAClC,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAY,EAAE,OAAgB;IACvD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;QACrC,MAAM,IAAI,GAAG,OAAO;YAClB,CAAC,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC;YAChC,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAC5B,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QACrD,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QACpC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canonical config path used when `--config` is not provided.
|
|
3
|
+
*
|
|
4
|
+
* Mirrors the path written by `scripts/install.sh`:
|
|
5
|
+
* $HOME/Library/Application Support/Rift/data/config.json
|
|
6
|
+
*
|
|
7
|
+
* Without this, the CLI default was `config.json` (relative to cwd),
|
|
8
|
+
* which broke every invocation made outside the data dir on a fresh
|
|
9
|
+
* friend install — `rift status` from the home folder would `ENOENT`.
|
|
10
|
+
*
|
|
11
|
+
* Override with the `RIFT_CONFIG` env var (absolute path) for tests
|
|
12
|
+
* or operators running multiple instances side-by-side.
|
|
13
|
+
*/
|
|
14
|
+
export declare function defaultConfigPath(): string;
|
|
15
|
+
//# sourceMappingURL=default-config-path.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"default-config-path.d.ts","sourceRoot":"","sources":["../../../src/cli/default-config-path.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAiB1C"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import os from "node:os";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
/**
|
|
4
|
+
* Canonical config path used when `--config` is not provided.
|
|
5
|
+
*
|
|
6
|
+
* Mirrors the path written by `scripts/install.sh`:
|
|
7
|
+
* $HOME/Library/Application Support/Rift/data/config.json
|
|
8
|
+
*
|
|
9
|
+
* Without this, the CLI default was `config.json` (relative to cwd),
|
|
10
|
+
* which broke every invocation made outside the data dir on a fresh
|
|
11
|
+
* friend install — `rift status` from the home folder would `ENOENT`.
|
|
12
|
+
*
|
|
13
|
+
* Override with the `RIFT_CONFIG` env var (absolute path) for tests
|
|
14
|
+
* or operators running multiple instances side-by-side.
|
|
15
|
+
*/
|
|
16
|
+
export function defaultConfigPath() {
|
|
17
|
+
// Per A-2.1: empty or whitespace-only RIFT_CONFIG falls through to the
|
|
18
|
+
// default. Treating " " as set would give the user a confusing
|
|
19
|
+
// `Config not found at /<cwd>` message later, when they think they
|
|
20
|
+
// didn't set the env var at all.
|
|
21
|
+
const override = process.env.RIFT_CONFIG;
|
|
22
|
+
if (typeof override === "string" && override.trim().length > 0) {
|
|
23
|
+
return path.resolve(override);
|
|
24
|
+
}
|
|
25
|
+
return path.join(os.homedir(), "Library", "Application Support", "Rift", "data", "config.json");
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=default-config-path.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"default-config-path.js","sourceRoot":"","sources":["../../../src/cli/default-config-path.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,iBAAiB;IAC/B,uEAAuE;IACvE,iEAAiE;IACjE,mEAAmE;IACnE,iCAAiC;IACjC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;IACzC,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/D,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,CACd,EAAE,CAAC,OAAO,EAAE,EACZ,SAAS,EACT,qBAAqB,EACrB,MAAM,EACN,MAAM,EACN,aAAa,CACd,CAAC;AACJ,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type KeychainOps } from "../auth/keychain.js";
|
|
2
|
-
export type CliErrorCode = "connection_refused" | "unauthorized" | "not_found" | "conflict" | "rate_limited" | "validation" | "server_error" | "unknown";
|
|
2
|
+
export type CliErrorCode = "connection_refused" | "unauthorized" | "not_found" | "invalid" | "conflict" | "rate_limited" | "validation" | "server_error" | "unknown";
|
|
3
3
|
export declare class CliError extends Error {
|
|
4
4
|
readonly code: CliErrorCode;
|
|
5
5
|
readonly statusCode?: number | undefined;
|
|
@@ -31,6 +31,61 @@ export interface HttpClient {
|
|
|
31
31
|
}>;
|
|
32
32
|
}
|
|
33
33
|
export declare function createHttpClient(opts: HttpClientOpts): HttpClient;
|
|
34
|
+
/**
|
|
35
|
+
* Single source of truth for "where is the config file?" — pure path
|
|
36
|
+
* resolution, no I/O. Per A-2.1 / A-2.2:
|
|
37
|
+
* --config wins over RIFT_CONFIG wins over default
|
|
38
|
+
* Empty / whitespace-only RIFT_CONFIG falls through to the default
|
|
39
|
+
* Relative paths are resolved with path.resolve at call time
|
|
40
|
+
*
|
|
41
|
+
* Callers that need the file to actually exist should use
|
|
42
|
+
* `requireExistingConfigPath` instead, which also classifies missing
|
|
43
|
+
* vs invalid distinctly.
|
|
44
|
+
*/
|
|
45
|
+
export declare function resolveConfigPath(globalOpts: {
|
|
46
|
+
config?: string;
|
|
47
|
+
}): string;
|
|
48
|
+
/**
|
|
49
|
+
* For commands that need an existing, valid config (search, save,
|
|
50
|
+
* import, ingest, mcp install, feedback, capture, etc.). Throws a
|
|
51
|
+
* `CliError` with code "not_found" or "invalid", whose messages are
|
|
52
|
+
* distinct per A-2.3a / A-2.3c. Caller should let the exception
|
|
53
|
+
* propagate so the top-level CLI handler renders it.
|
|
54
|
+
*/
|
|
55
|
+
export declare function requireExistingConfigPath(globalOpts: {
|
|
56
|
+
config?: string;
|
|
57
|
+
}): string;
|
|
58
|
+
/**
|
|
59
|
+
* No-config, no-auth direct probe of the daemon's /health endpoint.
|
|
60
|
+
* Used by `rift status` only — every other command needs config and
|
|
61
|
+
* auth. Per A-2.3a/A-2.3b: `rift status` MUST NOT hard-fail when the
|
|
62
|
+
* config is absent; it renders "config missing" instead, with the
|
|
63
|
+
* daemon's actual up/down state taken from this probe.
|
|
64
|
+
*/
|
|
65
|
+
export declare function probeDefaultDaemonHealth(): Promise<{
|
|
66
|
+
up: boolean;
|
|
67
|
+
uptimeSeconds?: number;
|
|
68
|
+
voyageKeyPresent?: boolean;
|
|
69
|
+
}>;
|
|
70
|
+
/**
|
|
71
|
+
* resolveBaseUrl stays strict — only commands that actually need the
|
|
72
|
+
* daemon URL call it, and they all need a real config. Per A-2.3a:
|
|
73
|
+
* status's no-config branch MUST NOT route through here; it uses
|
|
74
|
+
* `probeDefaultDaemonHealth()` instead.
|
|
75
|
+
*/
|
|
34
76
|
export declare function resolveBaseUrl(configPath: string): string;
|
|
77
|
+
/**
|
|
78
|
+
* Read the current auth token. Checks `~/.rift/token` first, then the
|
|
79
|
+
* macOS Keychain. Returns `null` only when no token has been issued —
|
|
80
|
+
* a real "not yet onboarded" state. A locked Keychain (typical over
|
|
81
|
+
* SSH or in CI without a GUI session) is a recoverable *failure*, not
|
|
82
|
+
* a missing token, so it surfaces as a typed `CliError` with the exact
|
|
83
|
+
* `security unlock-keychain` recovery command.
|
|
84
|
+
*
|
|
85
|
+
* Without this conversion, CLI commands that call `readToken()` would
|
|
86
|
+
* leak the raw `security find-generic-password` failure to the user.
|
|
87
|
+
* Confirmed live on `0.1.0-beta.6` against an SSH'd test user, post-
|
|
88
|
+
* publish, before this fix landed.
|
|
89
|
+
*/
|
|
35
90
|
export declare function readToken(keychain?: KeychainOps): Promise<string | null>;
|
|
36
91
|
//# sourceMappingURL=http-client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-client.d.ts","sourceRoot":"","sources":["../../../src/cli/http-client.ts"],"names":[],"mappings":"AAIA,OAAO,
|
|
1
|
+
{"version":3,"file":"http-client.d.ts","sourceRoot":"","sources":["../../../src/cli/http-client.ts"],"names":[],"mappings":"AAIA,OAAO,EAGL,KAAK,WAAW,EACjB,MAAM,qBAAqB,CAAC;AAG7B,MAAM,MAAM,YAAY,GACpB,oBAAoB,GACpB,cAAc,GACd,WAAW,GACX,SAAS,GACT,UAAU,GACV,cAAc,GACd,YAAY,GACZ,cAAc,GACd,SAAS,CAAC;AAEd,qBAAa,QAAS,SAAQ,KAAK;aAGf,IAAI,EAAE,YAAY;aAClB,UAAU,CAAC,EAAE,MAAM;aACnB,IAAI,CAAC,EAAE,OAAO;gBAH9B,OAAO,EAAE,MAAM,EACC,IAAI,EAAE,YAAY,EAClB,UAAU,CAAC,EAAE,MAAM,YAAA,EACnB,IAAI,CAAC,EAAE,OAAO,YAAA;CAKjC;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;CACxB;AAED,MAAM,WAAW,UAAU;IACzB,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACpC,IAAI,CACF,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,OAAO,EACd,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,GAC7C,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAC9C,aAAa,CACX,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,QAAQ,EACd,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,GAC7C,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAC9C,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CAC/D;AA6ED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,cAAc,GAAG,UAAU,CAqGjE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAezE;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,UAAU,EAAE;IACpD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,MAAM,CAqBT;AAED;;;;;;GAMG;AACH,wBAAsB,wBAAwB,IAAI,OAAO,CAAC;IACxD,EAAE,EAAE,OAAO,CAAC;IACZ,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,CAAC,CAuBD;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAqBzD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,SAAS,CAC7B,QAAQ,GAAE,WAAyB,GAClC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAqBxB"}
|