offrouter-cli 0.4.2 → 0.5.1

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.
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/commands/hooks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGzC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAoChD,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,MAAM,cAAc,GACxB,IAAI,CAkFN"}
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/commands/hooks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKzC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAoChD,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,MAAM,cAAc,GACxB,IAAI,CAoFN"}
@@ -1,4 +1,6 @@
1
- import { loadConfig } from "offrouter-core";
1
+ import { loadConfig, FileSecretStore, resolveOffRouterHome } from "offrouter-core";
2
+ import { join } from "node:path";
3
+ import { buildSubscriptionCandidates } from "./route.js";
2
4
  import { runUserPromptSubmitHook } from "offrouter-adapter-claude";
3
5
  const HOOK_EVENT = "UserPromptSubmit";
4
6
  function noActiveProfileOutput() {
@@ -52,12 +54,14 @@ export function registerHooksCommand(program, ctx) {
52
54
  workspaceTrusted: trustedWorkspace,
53
55
  });
54
56
  const profileOverlay = config.profiles[profile];
57
+ const secretStore = new FileSecretStore({
58
+ filePath: join(resolveOffRouterHome({ env }), "secrets.json"),
59
+ });
60
+ const candidates = await buildSubscriptionCandidates(profile, secretStore);
55
61
  const result = await runUserPromptSubmitHook(stdin, {
56
62
  profile,
57
63
  policy: config.policy,
58
- // Live catalog discovery lands later; empty candidates still allow
59
- // profile denials and configuration-needed context.
60
- candidates: [],
64
+ candidates,
61
65
  trustedWorkspace,
62
66
  routeConstraints: {
63
67
  subscriptionFirst: profileOverlay?.subscriptionFirst ??
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../src/commands/hooks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../src/commands/hooks.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,11 @@
1
1
  import type { Command } from "commander";
2
+ import { FileSecretStore, type ProviderCandidate } from "offrouter-core";
2
3
  import type { CommandContext } from "./init.js";
4
+ /**
5
+ * Build subscription candidates for the route explain command.
6
+ * Checks stored OAuth tokens and returns candidates with real
7
+ * auth-status data if tokens are available.
8
+ */
9
+ export declare function buildSubscriptionCandidates(profile: string, secretStore: FileSecretStore): Promise<ProviderCandidate[]>;
3
10
  export declare function registerRouteCommand(program: Command, ctx: () => CommandContext): void;
4
11
  //# sourceMappingURL=route.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../src/commands/route.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAWzC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AA6ChD,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,MAAM,cAAc,GACxB,IAAI,CAgIN"}
1
+ {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../src/commands/route.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EACL,eAAe,EAMf,KAAK,iBAAiB,EAEvB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAEhD;;;;GAIG;AACH,wBAAsB,2BAA2B,CAC/C,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,eAAe,GAC3B,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAuF9B;AA6CD,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,MAAM,cAAc,GACxB,IAAI,CAuIN"}
@@ -1,8 +1,88 @@
1
1
  import { createHash } from "node:crypto";
2
2
  import { join } from "node:path";
3
- import { FileUsageStore, loadConfig, resolveOffRouterHome, routeRequest, } from "offrouter-core";
3
+ import { FileSecretStore, FileUsageStore, loadConfig, resolveOffRouterHome, routeRequest, } from "offrouter-core";
4
4
  import { formatConfigError } from "./config-error.js";
5
5
  import { writeJson, writeText } from "./output.js";
6
+ /**
7
+ * Build subscription candidates for the route explain command.
8
+ * Checks stored OAuth tokens and returns candidates with real
9
+ * auth-status data if tokens are available.
10
+ */
11
+ export async function buildSubscriptionCandidates(profile, secretStore) {
12
+ const candidates = [];
13
+ // Only check OAuth tokens for profiles that match known subscription providers.
14
+ const isClaudeProfile = profile.startsWith("claude");
15
+ const isCodexProfile = profile.startsWith("codex");
16
+ if (!isClaudeProfile && !isCodexProfile) {
17
+ return candidates;
18
+ }
19
+ // For claude profiles, check anthropic OAuth.
20
+ if (isClaudeProfile) {
21
+ const anthropicToken = await secretStore
22
+ .get("anthropic:oauth")
23
+ .catch(() => undefined);
24
+ if (anthropicToken) {
25
+ try {
26
+ const parsed = JSON.parse(anthropicToken);
27
+ if (typeof parsed.accessToken === "string" &&
28
+ parsed.accessToken.length > 0 &&
29
+ (typeof parsed.expiresAt !== "number" || parsed.expiresAt > Date.now())) {
30
+ // Add a subscription candidate for anthropic.
31
+ candidates.push({
32
+ providerId: "anthropic-sub",
33
+ modelId: "claude-haiku-4-5",
34
+ displayName: "Claude (OAuth subscription)",
35
+ authTier: "subscription",
36
+ authScope: "first-party",
37
+ subscriptionStatus: "active",
38
+ health: "healthy",
39
+ supportsTools: true,
40
+ supportsStreaming: true,
41
+ supportsJson: true,
42
+ supportsImages: true,
43
+ estimatedCostUsd: 0,
44
+ });
45
+ }
46
+ }
47
+ catch {
48
+ // Malformed OAuth token; skip.
49
+ }
50
+ }
51
+ }
52
+ // For codex profiles, check openai OAuth.
53
+ if (isCodexProfile) {
54
+ const openaiToken = await secretStore
55
+ .get("openai:oauth")
56
+ .catch(() => undefined);
57
+ if (openaiToken) {
58
+ try {
59
+ const parsed = JSON.parse(openaiToken);
60
+ if (typeof parsed.accessToken === "string" &&
61
+ parsed.accessToken.length > 0 &&
62
+ (typeof parsed.expiresAt !== "number" || parsed.expiresAt > Date.now())) {
63
+ candidates.push({
64
+ providerId: "openai-sub",
65
+ modelId: "gpt-5-codex",
66
+ displayName: "OpenAI Codex (OAuth subscription)",
67
+ authTier: "subscription",
68
+ authScope: "first-party",
69
+ subscriptionStatus: "active",
70
+ health: "healthy",
71
+ supportsTools: true,
72
+ supportsStreaming: true,
73
+ supportsJson: true,
74
+ supportsImages: false,
75
+ estimatedCostUsd: 0,
76
+ });
77
+ }
78
+ }
79
+ catch {
80
+ // Malformed OAuth token; skip.
81
+ }
82
+ }
83
+ }
84
+ return candidates;
85
+ }
6
86
  function harnessKindFromProfile(profile) {
7
87
  if (profile.startsWith("claude"))
8
88
  return "claude";
@@ -91,9 +171,12 @@ export function registerRouteCommand(program, ctx) {
91
171
  writeText(stdout, `Cannot route (config_error): ${decision.explanation}`);
92
172
  return;
93
173
  }
94
- // No provider catalog in this milestone - empty candidates yield needsConfiguration
95
- // or a profile hard block for work/denied profiles.
96
- const decision = routeRequest(request, [], policyConfig);
174
+ // Build real adapter candidates by checking configured providers.
175
+ const secretStore = new FileSecretStore({
176
+ filePath: join(config.homeDir, "secrets.json"),
177
+ });
178
+ const candidates = await buildSubscriptionCandidates(opts.profile, secretStore);
179
+ const decision = routeRequest(request, candidates, policyConfig);
97
180
  const setupIncomplete = decision.needsConfiguration === true;
98
181
  // Check near-limit status for configured accounts.
99
182
  let nearLimitWarning = null;
@@ -1 +1 @@
1
- {"version":3,"file":"route.js","sourceRoot":"","sources":["../../src/commands/route.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"route.js","sourceRoot":"","sources":["../../src/commands/route.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "offrouter-cli",
3
- "version": "0.4.2",
3
+ "version": "0.5.1",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "offrouter": "dist/index.js"
@@ -12,12 +12,12 @@
12
12
  "test": "vitest run"
13
13
  },
14
14
  "dependencies": {
15
- "offrouter-adapter-claude": "0.4.2",
16
- "offrouter-adapter-codex": "0.4.2",
17
- "offrouter-adapter-gemini": "0.4.2",
18
- "offrouter-adapter-grok": "0.4.2",
19
- "offrouter-core": "0.4.2",
20
- "offrouter-mcp": "0.4.2",
15
+ "offrouter-adapter-claude": "0.5.1",
16
+ "offrouter-adapter-codex": "0.5.1",
17
+ "offrouter-adapter-gemini": "0.5.1",
18
+ "offrouter-adapter-grok": "0.5.1",
19
+ "offrouter-core": "0.5.1",
20
+ "offrouter-mcp": "0.5.1",
21
21
  "commander": "^12.0.0",
22
22
  "zod": "^3.23.0"
23
23
  },