@nac3/forge-cli 0.2.0-alpha.18 → 0.2.0-alpha.19

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.
Files changed (43) hide show
  1. package/dist/chat/server.js +13 -0
  2. package/dist/chat/server.js.map +1 -1
  3. package/dist/commands/license.d.ts.map +1 -1
  4. package/dist/commands/license.js +41 -0
  5. package/dist/commands/license.js.map +1 -1
  6. package/dist/deploy/adapter.d.ts +93 -0
  7. package/dist/deploy/adapter.d.ts.map +1 -0
  8. package/dist/deploy/adapter.js +42 -0
  9. package/dist/deploy/adapter.js.map +1 -0
  10. package/dist/deploy/aws_adapter.d.ts +28 -0
  11. package/dist/deploy/aws_adapter.d.ts.map +1 -0
  12. package/dist/deploy/aws_adapter.js +65 -0
  13. package/dist/deploy/aws_adapter.js.map +1 -0
  14. package/dist/deploy/cloudflare.d.ts +24 -0
  15. package/dist/deploy/cloudflare.d.ts.map +1 -0
  16. package/dist/deploy/cloudflare.js +169 -0
  17. package/dist/deploy/cloudflare.js.map +1 -0
  18. package/dist/license/sync.d.ts +54 -0
  19. package/dist/license/sync.d.ts.map +1 -0
  20. package/dist/license/sync.js +131 -0
  21. package/dist/license/sync.js.map +1 -0
  22. package/dist/version.d.ts +1 -1
  23. package/dist/version.js +1 -1
  24. package/dist/voice/providers/google.d.ts.map +1 -1
  25. package/dist/voice/providers/google.js +11 -3
  26. package/dist/voice/providers/google.js.map +1 -1
  27. package/dist/voice/router.d.ts +10 -0
  28. package/dist/voice/router.d.ts.map +1 -1
  29. package/dist/voice/router.js +39 -20
  30. package/dist/voice/router.js.map +1 -1
  31. package/dist/voice/types.d.ts +5 -2
  32. package/dist/voice/types.d.ts.map +1 -1
  33. package/dist/voice/types.js.map +1 -1
  34. package/package.json +1 -1
  35. package/templates/nextjs-app/README.md +48 -0
  36. package/templates/nextjs-app/next.config.js +8 -0
  37. package/templates/nextjs-app/package.json +33 -0
  38. package/templates/nextjs-app/src/app/globals.css +43 -0
  39. package/templates/nextjs-app/src/app/layout.tsx +29 -0
  40. package/templates/nextjs-app/src/app/page.tsx +63 -0
  41. package/templates/nextjs-app/src/nac/manifest.ts +36 -0
  42. package/templates/nextjs-app/tsconfig.json +21 -0
  43. package/templates/nextjs-app/yujin.forge.json +11 -0
@@ -0,0 +1,65 @@
1
+ export class AwsEcsAdapter {
2
+ id = 'aws';
3
+ description = 'AWS ECS Fargate -- always-on container, persistent state, custom networking. '
4
+ + 'For full-tier projects with workers / queues / DB.';
5
+ tierFit() { return ['medium', 'full']; }
6
+ async readyToRun() {
7
+ /* Delegate to the AWS SDK's credential chain -- importing
8
+ * the existing aws.ts function would trigger a heavy SDK
9
+ * load even for cheap "plan" calls. We do a light check via
10
+ * env vars + ~/.aws/credentials presence. */
11
+ const hasEnv = !!(process.env.AWS_ACCESS_KEY_ID && process.env.AWS_SECRET_ACCESS_KEY);
12
+ if (hasEnv)
13
+ return { ok: true };
14
+ /* Without env, fall back to checking ~/.aws/credentials. */
15
+ const fs = await import('node:fs');
16
+ const path = await import('node:path');
17
+ const os = await import('node:os');
18
+ const credPath = path.join(os.homedir(), '.aws', 'credentials');
19
+ try {
20
+ await fs.promises.access(credPath);
21
+ return { ok: true };
22
+ }
23
+ catch {
24
+ return { ok: false, reason: 'no AWS_ACCESS_KEY_ID env and no ~/.aws/credentials' };
25
+ }
26
+ }
27
+ async plan(input) {
28
+ return {
29
+ resources: [
30
+ 'ECS cluster: ' + input.projectSlug + '-cluster',
31
+ 'ECS service: ' + input.projectSlug + '-service (Fargate)',
32
+ 'CloudWatch log group: /yujin/' + input.projectSlug,
33
+ 'IAM role: ' + input.projectSlug + '-task-role',
34
+ ...(input.env ? ['Secrets: ' + Object.keys(input.env).join(', ')] : []),
35
+ ],
36
+ /* 1 Fargate task, 0.25 vCPU + 0.5GB RAM, on 24/7:
37
+ * ~$8.50/mo compute + ~$0.50 CloudWatch + ~$0.50 ECR =
38
+ * ~$10/mo. */
39
+ estimated_cost_usd: 10,
40
+ estimated_minutes: 10,
41
+ notes: [
42
+ 'Fargate baseline ~$0.04/hour per always-on task.',
43
+ 'Includes CloudWatch logs ($0.50/GB ingested) + ECR ($0.10/GB-month).',
44
+ 'Custom domain + ACM cert + Route53 zone are NOT included; configure once via console.',
45
+ 'First-time deploy provisions IAM + cluster + service (~10 min); subsequent deploys ~3 min rolling update.',
46
+ ],
47
+ };
48
+ }
49
+ async apply(_input) {
50
+ /* For alpha.19 we deliberately do NOT call the imperative
51
+ * applyDeploy() from src/deploy/aws.ts -- that function has
52
+ * a different input shape + uses prompts for missing config.
53
+ * The proper migration is a follow-up: refactor aws.ts to
54
+ * accept DeployInput + return DeployResult, then route the
55
+ * `yf deploy aws` command through this adapter.
56
+ *
57
+ * Today, calling AwsEcsAdapter.apply throws so callers see
58
+ * the unfinished migration. The plan() path above is fully
59
+ * functional + used by the tier-aware selector. */
60
+ throw new Error('AwsEcsAdapter.apply is not wired yet in alpha.19. '
61
+ + 'Use `yf deploy aws` (imperative path) for now. '
62
+ + 'The DeployAdapter migration completes in a follow-up.');
63
+ }
64
+ }
65
+ //# sourceMappingURL=aws_adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aws_adapter.js","sourceRoot":"","sources":["../../src/deploy/aws_adapter.ts"],"names":[],"mappings":"AAmBA,MAAM,OAAO,aAAa;IACf,EAAE,GAAG,KAAc,CAAC;IACpB,WAAW,GAClB,+EAA+E;UAC7E,oDAAoD,CAAC;IAEzD,OAAO,KAAa,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IAEhD,KAAK,CAAC,UAAU;QACd;;;qDAG6C;QAC7C,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QACtF,IAAI,MAAM;YAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;QAChC,4DAA4D;QAC5D,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;QACnC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;QACvC,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;QACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;QAChE,IAAI,CAAC;YAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAAC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;QAAC,CAAC;QAChE,MAAM,CAAC;YAAC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,oDAAoD,EAAE,CAAC;QAAC,CAAC;IAC/F,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,KAAkB;QAC3B,OAAO;YACL,SAAS,EAAE;gBACT,eAAe,GAAG,KAAK,CAAC,WAAW,GAAG,UAAU;gBAChD,eAAe,GAAG,KAAK,CAAC,WAAW,GAAG,oBAAoB;gBAC1D,+BAA+B,GAAG,KAAK,CAAC,WAAW;gBACnD,YAAY,GAAG,KAAK,CAAC,WAAW,GAAG,YAAY;gBAC/C,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;aACxE;YACD;;0BAEc;YACd,kBAAkB,EAAE,EAAE;YACtB,iBAAiB,EAAG,EAAE;YACtB,KAAK,EAAE;gBACL,kDAAkD;gBAClD,sEAAsE;gBACtE,uFAAuF;gBACvF,2GAA2G;aAC5G;SACF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,MAAmB;QAC7B;;;;;;;;;2DASmD;QACnD,MAAM,IAAI,KAAK,CACb,oDAAoD;cAClD,iDAAiD;cACjD,uDAAuD,CAC1D,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,24 @@
1
+ import type { DeployAdapter, DeployInput, DeployPlan, DeployResult, Tier } from './adapter.js';
2
+ export interface CloudflareAdapterOptions {
3
+ /** Override the wrangler binary path (defaults to "wrangler"). */
4
+ wranglerBin?: string;
5
+ /** Override the wrangler config dir (for tests). */
6
+ configDir?: string;
7
+ }
8
+ export declare class CloudflareAdapter implements DeployAdapter {
9
+ private opts;
10
+ readonly id: "cloudflare";
11
+ readonly description: string;
12
+ constructor(opts?: CloudflareAdapterOptions);
13
+ tierFit(): Tier[];
14
+ readyToRun(): Promise<{
15
+ ok: boolean;
16
+ reason?: string;
17
+ }>;
18
+ plan(input: DeployInput): Promise<DeployPlan>;
19
+ apply(input: DeployInput): Promise<DeployResult>;
20
+ private runWrangler;
21
+ private dirExists;
22
+ private countFiles;
23
+ }
24
+ //# sourceMappingURL=cloudflare.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloudflare.d.ts","sourceRoot":"","sources":["../../src/deploy/cloudflare.ts"],"names":[],"mappings":"AA6BA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAE/F,MAAM,WAAW,wBAAwB;IACvC,kEAAkE;IAClE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oDAAoD;IACpD,SAAS,CAAC,EAAI,MAAM,CAAC;CACtB;AAED,qBAAa,iBAAkB,YAAW,aAAa;IAMzC,OAAO,CAAC,IAAI;IALxB,QAAQ,CAAC,EAAE,EAAG,YAAY,CAAU;IACpC,QAAQ,CAAC,WAAW,SAE8C;gBAE9C,IAAI,GAAE,wBAA6B;IAEvD,OAAO,IAAI,IAAI,EAAE;IAEX,UAAU,IAAI,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IA8BvD,IAAI,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IA2B7C,KAAK,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;YA2BxC,WAAW;YAiBX,SAAS;YAOT,UAAU;CAezB"}
@@ -0,0 +1,169 @@
1
+ /**
2
+ * Cloudflare Pages adapter (default for Simple + Medium projects).
3
+ *
4
+ * Implementation strategy: shell out to `wrangler pages deploy`.
5
+ * Wrangler handles authentication (oauth token at
6
+ * ~/.config/.wrangler/config/default.toml) + the project upload.
7
+ * We invoke + parse its output.
8
+ *
9
+ * Why Cloudflare for default:
10
+ * - Free tier covers 5M req/day -- 12+ months runway for new
11
+ * projects.
12
+ * - 20-40s typical deploy time.
13
+ * - Edge-deployed across 250+ POPs by default; no CDN setup.
14
+ * - DNS + ACM cert auto-managed under *.pages.dev.
15
+ * - Pablo's account is already wrangler-authed.
16
+ *
17
+ * What this adapter does NOT do today:
18
+ * - Custom domains (requires zone owned by the user's CF account).
19
+ * - Server-side workers (would need a separate `wrangler deploy`
20
+ * for the Worker bundle; the Pages adapter is static-only).
21
+ * - Environment variable updates (the user has to set those
22
+ * manually for now via the CF dashboard or `wrangler pages
23
+ * project create --variable`).
24
+ *
25
+ * ASCII-only.
26
+ */
27
+ import { spawn } from 'node:child_process';
28
+ import { promises as fs } from 'node:fs';
29
+ import path from 'node:path';
30
+ export class CloudflareAdapter {
31
+ opts;
32
+ id = 'cloudflare';
33
+ description = 'Cloudflare Pages + Workers -- free tier, edge-deployed, 20-40s deploys. '
34
+ + 'Best for simple + medium projects without persistent state.';
35
+ constructor(opts = {}) {
36
+ this.opts = opts;
37
+ }
38
+ tierFit() { return ['simple', 'medium']; }
39
+ async readyToRun() {
40
+ const wranglerBin = this.opts.wranglerBin ?? 'wrangler';
41
+ /* Check that wrangler is on PATH + has an OAuth/API token
42
+ * available. We rely on `wrangler whoami` to do this for us
43
+ * -- exit code 0 means authed. */
44
+ return new Promise((resolve) => {
45
+ let stdout = '';
46
+ let stderr = '';
47
+ const ps = spawn(wranglerBin, ['whoami'], { shell: true });
48
+ ps.stdout.on('data', (d) => { stdout += d.toString(); });
49
+ ps.stderr.on('data', (d) => { stderr += d.toString(); });
50
+ ps.on('error', (err) => {
51
+ resolve({ ok: false, reason: 'wrangler not runnable: ' + err.message });
52
+ });
53
+ ps.on('close', (code) => {
54
+ if (code !== 0) {
55
+ resolve({
56
+ ok: false,
57
+ reason: 'wrangler whoami exit ' + code + '. Run `wrangler login` first. stderr: '
58
+ + stderr.slice(0, 200),
59
+ });
60
+ }
61
+ else if (/not authenticated|no.*token/i.test(stdout)) {
62
+ resolve({ ok: false, reason: 'wrangler not authenticated. Run `wrangler login`.' });
63
+ }
64
+ else {
65
+ resolve({ ok: true });
66
+ }
67
+ });
68
+ });
69
+ }
70
+ async plan(input) {
71
+ const exists = await this.dirExists(input.buildDir);
72
+ if (!exists) {
73
+ throw new Error('cloudflare.plan: buildDir does not exist: ' + input.buildDir);
74
+ }
75
+ const fileCount = await this.countFiles(input.buildDir);
76
+ return {
77
+ resources: [
78
+ 'Cloudflare Pages project: ' + input.projectSlug,
79
+ 'Static assets: ' + fileCount + ' files',
80
+ 'Edge-deployed at ' + input.projectSlug + '.pages.dev',
81
+ ...(input.env && Object.keys(input.env).length > 0
82
+ ? ['Env vars (set separately via wrangler pages project create): ' + Object.keys(input.env).join(', ')]
83
+ : []),
84
+ ],
85
+ /* Free tier covers 500 builds/month + 5M req/day. New
86
+ * projects expect $0/mo for ~12+ months. */
87
+ estimated_cost_usd: 0,
88
+ estimated_minutes: Math.max(1, Math.ceil(fileCount / 200)),
89
+ notes: [
90
+ 'Cloudflare Pages free tier covers 500 builds/month + 5M requests/day.',
91
+ 'Above the free tier, Pages overage = $5/1M requests; build minutes overage = $0.005/min.',
92
+ 'Workers (if added) free 100k req/day; $0.30 per million above.',
93
+ ],
94
+ };
95
+ }
96
+ async apply(input) {
97
+ const exists = await this.dirExists(input.buildDir);
98
+ if (!exists) {
99
+ throw new Error('cloudflare.apply: buildDir does not exist: ' + input.buildDir);
100
+ }
101
+ const wranglerBin = this.opts.wranglerBin ?? 'wrangler';
102
+ const args = ['pages', 'deploy', input.buildDir,
103
+ '--project-name', input.projectSlug,
104
+ '--branch', 'main'];
105
+ const t0 = Date.now();
106
+ const out = await this.runWrangler(wranglerBin, args);
107
+ const seconds = Math.round((Date.now() - t0) / 1000);
108
+ /* Parse the URL out of wrangler's output. */
109
+ const urlMatch = out.combined.match(/https:\/\/[a-z0-9-]+\.[a-z0-9-]+\.pages\.dev/i);
110
+ if (!urlMatch) {
111
+ throw new Error('cloudflare.apply: could not parse deploy URL from wrangler output. '
112
+ + 'Tail: ' + out.combined.slice(-500));
113
+ }
114
+ return {
115
+ url: urlMatch[0],
116
+ deployed_at: new Date().toISOString(),
117
+ build_seconds: seconds,
118
+ logs_tail: out.combined.split('\n').slice(-20),
119
+ };
120
+ }
121
+ async runWrangler(bin, args) {
122
+ return new Promise((resolve, reject) => {
123
+ let combined = '';
124
+ const ps = spawn(bin, args, { shell: true });
125
+ ps.stdout.on('data', (d) => { combined += d.toString(); });
126
+ ps.stderr.on('data', (d) => { combined += d.toString(); });
127
+ ps.on('error', (err) => reject(new Error('wrangler spawn failed: ' + err.message)));
128
+ ps.on('close', (code) => {
129
+ if (code !== 0) {
130
+ reject(new Error('wrangler exit ' + code + '. Tail: ' + combined.slice(-500)));
131
+ return;
132
+ }
133
+ resolve({ exit: code ?? 0, combined });
134
+ });
135
+ });
136
+ }
137
+ async dirExists(p) {
138
+ try {
139
+ const st = await fs.stat(p);
140
+ return st.isDirectory();
141
+ }
142
+ catch {
143
+ return false;
144
+ }
145
+ }
146
+ async countFiles(p) {
147
+ let count = 0;
148
+ const walk = async (dir) => {
149
+ let entries;
150
+ try {
151
+ entries = await fs.readdir(dir, { withFileTypes: true });
152
+ }
153
+ catch {
154
+ return;
155
+ }
156
+ for (const e of entries) {
157
+ if (e.name === 'node_modules' || e.name.startsWith('.'))
158
+ continue;
159
+ if (e.isDirectory())
160
+ await walk(path.join(dir, e.name));
161
+ else if (e.isFile())
162
+ count++;
163
+ }
164
+ };
165
+ await walk(p);
166
+ return count;
167
+ }
168
+ }
169
+ //# sourceMappingURL=cloudflare.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloudflare.js","sourceRoot":"","sources":["../../src/deploy/cloudflare.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * License sync -- pulls the canonical license row from the
3
+ * HITO 4 server and updates the local Polar cache.
4
+ *
5
+ * Flow:
6
+ * 1. Read local cache (~/.yujin-forge/license.json).
7
+ * Needs user_handle. If missing -> error pointing to
8
+ * `yf license activate --user-handle <email>`.
9
+ * 2. Call fetchServerLicense via the HMAC-signed Hito4 client.
10
+ * 3. Map the server response to a LicenseCache patch.
11
+ * 4. Merge + write back. Bumps last_validated_at to now.
12
+ * 5. Return a SyncReport for the CLI to print.
13
+ *
14
+ * Why this exists: the Polar webhook updates the SERVER-side D1
15
+ * row. The local cache was never wired to pull. The "activate"
16
+ * copy advertised "license.json updated automatically" -- it was
17
+ * not. This fixes that gap.
18
+ *
19
+ * ASCII-only.
20
+ */
21
+ import { type LicenseCache } from '../core/polar.js';
22
+ import { type Hito4ClientDeps } from './hito4_client.js';
23
+ export interface SyncReport {
24
+ ok: boolean;
25
+ /** Plan as known to the server. */
26
+ server_plan?: string;
27
+ /** Plan we had locally before sync. */
28
+ local_plan_before?: string;
29
+ /** Plan we now have locally. */
30
+ local_plan_after?: string;
31
+ /** HTTP status from the server call. */
32
+ http_status?: number;
33
+ /** Server validated_at timestamp. */
34
+ last_validated_at?: string;
35
+ /** Error string when ok=false. */
36
+ error?: string;
37
+ /** Verbose log lines (URLs called, headers redacted). Only
38
+ * populated when verbose=true. */
39
+ log?: string[];
40
+ }
41
+ export interface SyncOptions extends Hito4ClientDeps {
42
+ verbose?: boolean;
43
+ /** Override the source of the local cache (for tests). */
44
+ readLocal?: () => Promise<LicenseCache>;
45
+ /** Override the persist path (for tests). */
46
+ writeLocal?: (next: LicenseCache) => Promise<void>;
47
+ }
48
+ /** Map a server response body to the LicenseCache plan + fields.
49
+ * The server today returns the row in {plan, expires_at,
50
+ * subscription_id, customer_id, user_handle, cancel_grace_until,
51
+ * bills_first_on, trial_started_at, payment_method_attached}. */
52
+ export declare function serverBodyToPatch(body: Record<string, unknown>): Partial<LicenseCache> | null;
53
+ export declare function syncLicense(opts?: SyncOptions): Promise<SyncReport>;
54
+ //# sourceMappingURL=sync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/license/sync.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,EAGL,KAAK,YAAY,EAElB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAsB,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAE7E,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,OAAO,CAAC;IACZ,mCAAmC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uCAAuC;IACvC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,gCAAgC;IAChC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,wCAAwC;IACxC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qCAAqC;IACrC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,kCAAkC;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;uCACmC;IACnC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,MAAM,WAAW,WAAY,SAAQ,eAAe;IAClD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,0DAA0D;IAC1D,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC,YAAY,CAAC,CAAC;IACxC,6CAA6C;IAC7C,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACpD;AAED;;;kEAGkE;AAClE,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI,CAuB7F;AAED,wBAAsB,WAAW,CAAC,IAAI,GAAE,WAAgB,GAAG,OAAO,CAAC,UAAU,CAAC,CAgF7E"}
@@ -0,0 +1,131 @@
1
+ /**
2
+ * License sync -- pulls the canonical license row from the
3
+ * HITO 4 server and updates the local Polar cache.
4
+ *
5
+ * Flow:
6
+ * 1. Read local cache (~/.yujin-forge/license.json).
7
+ * Needs user_handle. If missing -> error pointing to
8
+ * `yf license activate --user-handle <email>`.
9
+ * 2. Call fetchServerLicense via the HMAC-signed Hito4 client.
10
+ * 3. Map the server response to a LicenseCache patch.
11
+ * 4. Merge + write back. Bumps last_validated_at to now.
12
+ * 5. Return a SyncReport for the CLI to print.
13
+ *
14
+ * Why this exists: the Polar webhook updates the SERVER-side D1
15
+ * row. The local cache was never wired to pull. The "activate"
16
+ * copy advertised "license.json updated automatically" -- it was
17
+ * not. This fixes that gap.
18
+ *
19
+ * ASCII-only.
20
+ */
21
+ import { readLicense as readPolarLicense, writeLicense as writePolarLicense, } from '../core/polar.js';
22
+ import { fetchServerLicense } from './hito4_client.js';
23
+ /** Map a server response body to the LicenseCache plan + fields.
24
+ * The server today returns the row in {plan, expires_at,
25
+ * subscription_id, customer_id, user_handle, cancel_grace_until,
26
+ * bills_first_on, trial_started_at, payment_method_attached}. */
27
+ export function serverBodyToPatch(body) {
28
+ if (!body || typeof body !== 'object')
29
+ return null;
30
+ const planRaw = body.plan;
31
+ const validPlans = [
32
+ 'none', 'trial', 'paid', 'cancelled', 'free-public', 'institutional', 'gifted',
33
+ ];
34
+ if (typeof planRaw !== 'string' || !validPlans.includes(planRaw)) {
35
+ return null;
36
+ }
37
+ const patch = { plan: planRaw };
38
+ if (typeof body.subscription_id === 'string')
39
+ patch.subscription_id = body.subscription_id;
40
+ if (typeof body.user_handle === 'string')
41
+ patch.user_handle = body.user_handle.toLowerCase();
42
+ if (typeof body.cancel_grace_until === 'string')
43
+ patch.cancel_grace_until = body.cancel_grace_until;
44
+ if (typeof body.bills_first_on === 'string')
45
+ patch.bills_first_on = body.bills_first_on;
46
+ if (typeof body.trial_started_at === 'string')
47
+ patch.trial_started_at = body.trial_started_at;
48
+ if (body.expires_at === null || typeof body.expires_at === 'string') {
49
+ patch.expires_at = body.expires_at;
50
+ }
51
+ if (typeof body.payment_method_attached === 'boolean'
52
+ || typeof body.payment_method_attached === 'number') {
53
+ patch.payment_method_attached = Boolean(body.payment_method_attached);
54
+ }
55
+ return patch;
56
+ }
57
+ export async function syncLicense(opts = {}) {
58
+ const log = [];
59
+ const verbose = Boolean(opts.verbose);
60
+ const readLocal = opts.readLocal ?? readPolarLicense;
61
+ const writeLocal = opts.writeLocal ?? writePolarLicense;
62
+ const local = await readLocal();
63
+ if (verbose) {
64
+ log.push('[license-sync] local cache loaded plan=' + local.plan
65
+ + ' user_handle=' + (local.user_handle ?? '(none)'));
66
+ }
67
+ if (!local.user_handle) {
68
+ return {
69
+ ok: false,
70
+ error: 'no user_handle on local license cache. Run `yf license activate --user-handle <you@example.com>` first.',
71
+ local_plan_before: local.plan,
72
+ log: verbose ? log : undefined,
73
+ };
74
+ }
75
+ if (verbose)
76
+ log.push('[license-sync] calling Hito4 fetchServerLicense for ' + local.user_handle);
77
+ let resp;
78
+ try {
79
+ resp = await fetchServerLicense(opts);
80
+ }
81
+ catch (err) {
82
+ return {
83
+ ok: false,
84
+ error: err instanceof Error ? err.message : String(err),
85
+ local_plan_before: local.plan,
86
+ log: verbose ? log : undefined,
87
+ };
88
+ }
89
+ if (verbose) {
90
+ log.push('[license-sync] server HTTP ' + resp.status + ' ok=' + resp.ok);
91
+ }
92
+ if (!resp.ok) {
93
+ return {
94
+ ok: false,
95
+ error: typeof resp.body?.error === 'string' ? resp.body.error : 'server returned HTTP ' + resp.status,
96
+ http_status: resp.status,
97
+ server_plan: typeof resp.body?.plan === 'string' ? resp.body.plan : undefined,
98
+ local_plan_before: local.plan,
99
+ log: verbose ? log : undefined,
100
+ };
101
+ }
102
+ const patch = serverBodyToPatch(resp.body);
103
+ if (!patch) {
104
+ return {
105
+ ok: false,
106
+ error: 'server response body did not contain a valid plan field',
107
+ http_status: resp.status,
108
+ local_plan_before: local.plan,
109
+ log: verbose ? log : undefined,
110
+ };
111
+ }
112
+ const merged = {
113
+ ...local,
114
+ ...patch,
115
+ last_validated_at: new Date().toISOString(),
116
+ };
117
+ await writeLocal(merged);
118
+ if (verbose) {
119
+ log.push('[license-sync] local cache updated plan=' + local.plan + ' -> ' + merged.plan);
120
+ }
121
+ return {
122
+ ok: true,
123
+ server_plan: patch.plan,
124
+ local_plan_before: local.plan,
125
+ local_plan_after: merged.plan,
126
+ http_status: resp.status,
127
+ last_validated_at: merged.last_validated_at,
128
+ log: verbose ? log : undefined,
129
+ };
130
+ }
131
+ //# sourceMappingURL=sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/license/sync.ts"],"names":[],"mappings":"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"}
package/dist/version.d.ts CHANGED
@@ -4,5 +4,5 @@
4
4
  * into the npm metadata) so we don't end up with two versions
5
5
  * drifting.
6
6
  */
7
- export declare const VERSION = "0.2.0-alpha.18";
7
+ export declare const VERSION = "0.2.0-alpha.19";
8
8
  //# sourceMappingURL=version.d.ts.map
package/dist/version.js CHANGED
@@ -4,5 +4,5 @@
4
4
  * into the npm metadata) so we don't end up with two versions
5
5
  * drifting.
6
6
  */
7
- export const VERSION = '0.2.0-alpha.18';
7
+ export const VERSION = '0.2.0-alpha.19';
8
8
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"google.d.ts","sourceRoot":"","sources":["../../../src/voice/providers/google.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAIH,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAE7C,OAAO,KAAK,EACV,WAAW,EACX,UAAU,EACV,WAAW,EACX,cAAc,EACd,WAAW,EACX,UAAU,EACV,WAAW,EACX,cAAc,EACf,MAAM,aAAa,CAAC;AAuErB,QAAA,MAAM,UAAU,iBAAiB,CAAC;AAElC,MAAM,WAAW,qBAAqB;IACpC,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC;CACpC;AAED,wDAAwD;AACxD,iBAAS,yBAAyB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAUjE;AAED,8DAA8D;AAC9D,iBAAS,yBAAyB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAQjE;AA4ED,qBAAa,iBAAkB,YAAW,WAAW;IACnD,QAAQ,CAAC,EAAE,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAe;IACzC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAuB;gBAEvC,IAAI,GAAE,qBAA0B;IAKtC,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IAI9B,UAAU,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC;CAwExD;AAMD,qBAAa,iBAAkB,YAAW,WAAW;IACnD,QAAQ,CAAC,EAAE,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAe;IACzC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAuB;gBAEvC,IAAI,GAAE,qBAA0B;IAKtC,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IAI9B,UAAU,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC;IA0EvD;qDACiD;IACjD,OAAO,CAAC,sBAAsB;IAQ9B,qDAAqD;IACrD,OAAO,CAAC,UAAU;CAMnB;AAGD,OAAO,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,UAAU,EAAE,CAAC"}
1
+ {"version":3,"file":"google.d.ts","sourceRoot":"","sources":["../../../src/voice/providers/google.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAIH,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAE7C,OAAO,KAAK,EACV,WAAW,EACX,UAAU,EACV,WAAW,EACX,cAAc,EACd,WAAW,EACX,UAAU,EACV,WAAW,EACX,cAAc,EACf,MAAM,aAAa,CAAC;AAuErB,QAAA,MAAM,UAAU,iBAAiB,CAAC;AAElC,MAAM,WAAW,qBAAqB;IACpC,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC;CACpC;AAED,wDAAwD;AACxD,iBAAS,yBAAyB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAUjE;AAED,8DAA8D;AAC9D,iBAAS,yBAAyB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAQjE;AA4ED,qBAAa,iBAAkB,YAAW,WAAW;IACnD,QAAQ,CAAC,EAAE,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAe;IACzC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAuB;gBAEvC,IAAI,GAAE,qBAA0B;IAKtC,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IAI9B,UAAU,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC;CAmFxD;AAMD,qBAAa,iBAAkB,YAAW,WAAW;IACnD,QAAQ,CAAC,EAAE,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAe;IACzC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAuB;gBAEvC,IAAI,GAAE,qBAA0B;IAKtC,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IAI9B,UAAU,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC;IA0EvD;qDACiD;IACjD,OAAO,CAAC,sBAAsB;IAQ9B,qDAAqD;IACrD,OAAO,CAAC,UAAU;CAMnB;AAGD,OAAO,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,UAAU,EAAE,CAAC"}
@@ -203,18 +203,26 @@ export class GoogleSttProvider {
203
203
  }
204
204
  const language = req.languageHint || DEFAULT_STT_LANGUAGE;
205
205
  const encoding = sttFormatToGoogleEncoding(req.format);
206
- const model = req.model ?? 'latest_short';
206
+ /* Model handling: only set `model` when the caller explicitly
207
+ * requested one. The previous default (`latest_short`) is NOT
208
+ * supported for several locales -- e.g. es-AR fails with
209
+ * "model not supported for language". Letting Google pick the
210
+ * model from the languageCode is more robust + matches the
211
+ * behaviour users expect ("just transcribe my Spanish"). */
212
+ const model = req.model;
207
213
  const body = {
208
214
  config: {
209
215
  encoding,
210
216
  languageCode: language,
211
- model,
212
217
  enableAutomaticPunctuation: true,
213
218
  },
214
219
  audio: {
215
220
  content: req.audio.toString('base64'),
216
221
  },
217
222
  };
223
+ if (model) {
224
+ body.config.model = model;
225
+ }
218
226
  const t0 = Date.now();
219
227
  const resp = await this.fetchImpl(STT_ENDPOINT + '?key=' + encodeURIComponent(apiKey), {
220
228
  method: 'POST',
@@ -250,7 +258,7 @@ export class GoogleSttProvider {
250
258
  text,
251
259
  latency_ms,
252
260
  provider: this.id,
253
- model,
261
+ ...(model ? { model } : {}),
254
262
  ...(confidence !== undefined ? { confidence } : {}),
255
263
  ...(detectedLang ? { language: detectedLang } : {}),
256
264
  };
@@ -1 +1 @@
1
- {"version":3,"file":"google.js","sourceRoot":"","sources":["../../../src/voice/providers/google.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"google.js","sourceRoot":"","sources":["../../../src/voice/providers/google.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAYnD,MAAM,YAAY,GAAG,mDAAmD,CAAC;AACzE,MAAM,YAAY,GAAG,wDAAwD,CAAC;AAC9E,MAAM,oBAAoB,GAAG,OAAO,CAAC;AACrC,MAAM,oBAAoB,GAAG,OAAO,CAAC;AACrC,MAAM,iBAAiB,GAAG,iBAAiB,CAAC;AAE5C;;;iEAGiE;AACjE,MAAM,eAAe,GAA2B;IAC9C;;kDAE8C;IAC9C,IAAI,EAAK,iBAAiB;IAC1B,OAAO,EAAE,iBAAiB;IAC1B,OAAO,EAAE,iBAAiB;IAC1B,OAAO,EAAE,iBAAiB;IAC1B,OAAO,EAAE,iBAAiB;IAE1B,iDAAiD;IACjD,IAAI,EAAK,iBAAiB;IAC1B,OAAO,EAAE,iBAAiB;IAC1B,OAAO,EAAE,iBAAiB;IAE1B,iBAAiB;IACjB,IAAI,EAAK,iBAAiB;IAC1B,OAAO,EAAE,iBAAiB;IAC1B,OAAO,EAAE,iBAAiB;IAE1B,aAAa;IACb,IAAI,EAAK,iBAAiB;IAC1B,OAAO,EAAE,iBAAiB;IAC1B,OAAO,EAAE,iBAAiB;IAE1B,cAAc;IACd,IAAI,EAAK,iBAAiB;IAC1B,OAAO,EAAE,iBAAiB;IAE1B,aAAa;IACb,IAAI,EAAK,iBAAiB;IAC1B,OAAO,EAAE,iBAAiB;IAE1B,eAAe;IACf,IAAI,EAAK,iBAAiB;IAC1B,OAAO,EAAE,iBAAiB;IAE1B,uBAAuB;IACvB,IAAI,EAAK,kBAAkB;IAC3B,OAAO,EAAE,kBAAkB;IAC3B,OAAO,EAAE,kBAAkB;IAE3B,YAAY;IACZ,IAAI,EAAK,iBAAiB;IAC1B,OAAO,EAAE,iBAAiB;IAE1B,aAAa;IACb,IAAI,EAAK,iBAAiB;IAC1B,OAAO,EAAE,iBAAiB;CAC3B,CAAC;AAEF,SAAS,cAAc,CAAC,GAAW;IACjC,IAAI,eAAe,CAAC,GAAG,CAAC;QAAE,OAAO,eAAe,CAAC,GAAG,CAAC,CAAC;IACtD,gCAAgC;IAChC,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/B,IAAI,IAAI,IAAI,eAAe,CAAC,IAAI,CAAC;QAAE,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC;IAChE,OAAO,SAAS,CAAC;AACnB,CAAC;AACD,MAAM,kBAAkB,GAAmB,KAAK,CAAC;AACjD,MAAM,UAAU,GAAG,cAAc,CAAC;AAOlC,wDAAwD;AACxD,SAAS,yBAAyB,CAAC,MAAsB;IACvD,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,MAAM,CAAC,CAAC,OAAO,WAAW,CAAC;QAChC,KAAK,KAAK,CAAC,CAAE,OAAO,UAAU,CAAC;QAC/B,KAAK,KAAK,CAAC,CAAE,OAAO,UAAU,CAAC;QAC/B,KAAK,KAAK,CAAC,CAAE,OAAO,KAAK,CAAC;QAC1B,KAAK,MAAM,CAAC,CAAC,OAAO,MAAM,CAAC;QAC3B,KAAK,KAAK,CAAC,CAAE,OAAO,SAAS,CAAC;QAC9B,OAAO,CAAC,CAAK,OAAO,sBAAsB,CAAC;IAC7C,CAAC;AACH,CAAC;AAED,8DAA8D;AAC9D,SAAS,yBAAyB,CAAC,MAAsB;IACvD,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,KAAK,CAAC,CAAG,OAAO,KAAK,CAAC;QAC3B,KAAK,KAAK,CAAC,CAAG,OAAO,UAAU,CAAC;QAChC,KAAK,KAAK,CAAC,CAAG,OAAO,UAAU,CAAC;QAChC,KAAK,MAAM,CAAC,CAAE,OAAO,UAAU,CAAC;QAChC,OAAO,CAAC,CAAM,OAAO,KAAK,CAAC;IAC7B,CAAC;AACH,CAAC;AAID;;;;;8CAK8C;AAC9C,KAAK,UAAU,eAAe,CAAC,OAAyB;IACtD,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,oBAAoB,CAAC,CAAC;QACvD,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAG5B,CAAC;QACF,MAAM,GAAG,GAAG,OAAO,MAAM,CAAC,cAAc,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1F,MAAM,GAAG,GAAG,OAAO,MAAM,CAAC,cAAc,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1F,MAAM,OAAO,GAAG,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QAC9C,MAAM,QAAQ,GAAG,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QAC/C,IAAI,OAAO,KAAK,EAAE;YAAE,OAAO,OAAO,CAAC;QACnC,IAAI,QAAQ,KAAK,EAAE;YAAE,OAAO,QAAQ,CAAC;QACrC,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ;eAC7C,CAAC,CAAC,GAAG,YAAY,WAAW,CAAC,EAAE,CAAC;YACrC,0DAA0D;QAC5D,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,KAAK,UAAU,OAAO,CAAC,MAA4B,EAAE,OAAyB;IAC5E,4DAA4D;IAC5D,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC;IAChD,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAE9B,yDAAyD;IACzD,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,MAAM,EAAE,CAAC;QAC7B,IAAI,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YAC1B,OAAO,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAAC,MAAM,CAAC,CAAC,oDAAoD,CAAC,CAAC;IAEhE,MAAM,QAAQ,GAAG,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,gBAAgB,CAAC;IACzE,MAAM,IAAI,KAAK,CACb,iDAAiD;UAC/C,8BAA8B,GAAG,QAAQ,GAAG,2CAA2C;UACvF,oBAAoB,GAAG,UAAU,GAAG,4CAA4C,CACnF,CAAC;AACJ,CAAC;AAED;;gBAEgB;AAChB,KAAK,UAAU,MAAM,CAAC,MAA4B,EAAE,OAAyB;IAC3E,IAAI,CAAC,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC3D,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,MAAM,EAAE,CAAC;QAC7B,OAAO,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,CAAW;IACjC,IAAI,CAAC;QAAC,OAAO,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,WAAW,CAAC;IAAC,CAAC;AAC9D,CAAC;AAED;;kEAEkE;AAElE,MAAM,OAAO,iBAAiB;IACnB,EAAE,GAAG,QAAQ,CAAC;IACN,SAAS,CAAe;IACxB,WAAW,CAAuB;IAEnD,YAAY,OAA8B,EAAE;QAC1C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;QAC5E,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC;IACxF,CAAC;IAED,KAAK,CAAC,UAAU;QACd,OAAO,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,GAAe;QAC9B,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzC,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;QACvD,CAAC;QACD,IAAI,MAAc,CAAC;QACnB,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QAClD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,GAAG,CAAC;QACZ,CAAC;QAED,MAAM,QAAQ,GAAG,GAAG,CAAC,YAAY,IAAI,oBAAoB,CAAC;QAC1D,MAAM,QAAQ,GAAG,yBAAyB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACvD;;;;;oEAK4D;QAC5D,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;QAExB,MAAM,IAAI,GAGN;YACF,MAAM,EAAE;gBACN,QAAQ;gBACR,YAAY,EAAE,QAAQ;gBACtB,0BAA0B,EAAE,IAAI;aACjC;YACD,KAAK,EAAE;gBACL,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC;aACtC;SACF,CAAC;QACF,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;QAC5B,CAAC;QAED,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACtB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,OAAO,GAAG,kBAAkB,CAAC,MAAM,CAAC,EAAE;YACrF,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;QAEnC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;YACpC,MAAM,IAAI,KAAK,CACb,iBAAiB,GAAG,IAAI,CAAC,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI;kBAC5D,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CACvB,CAAC;QACJ,CAAC;QAED,IAAI,MAAW,CAAC;QAChB,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAC7B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,yCAAyC,GAAG,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAClH,CAAC;QAED;;+BAEuB;QACvB,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC3D,CAAC;QACD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QACpE,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACzB,MAAM,GAAG,GAAG,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC3F,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,OAAO,GAAG,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtF,MAAM,UAAU,GAAG,CAAC,GAAG,IAAI,OAAO,GAAG,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;QAC5F,MAAM,YAAY,GAAG,CAAC,KAAK,IAAI,OAAO,KAAK,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;QAExG,OAAO;YACL,IAAI;YACJ,UAAU;YACV,QAAQ,EAAE,IAAI,CAAC,EAAE;YACjB,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3B,GAAG,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACnD,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACpD,CAAC;IACJ,CAAC;CACF;AAED;;kEAEkE;AAElE,MAAM,OAAO,iBAAiB;IACnB,EAAE,GAAG,QAAQ,CAAC;IACN,SAAS,CAAe;IACxB,WAAW,CAAuB;IAEnD,YAAY,OAA8B,EAAE;QAC1C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;QAC5E,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC;IACxF,CAAC;IAED,KAAK,CAAC,UAAU;QACd,OAAO,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,GAAe;QAC9B,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC/C,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QAEtD;;;;;gEAKwD;QACxD,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QACnD,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK;eAClB,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;eAC/C,iBAAiB,CAAC;QACvB,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,IAAI,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,IAAI,oBAAoB,CAAC;QAC5F,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,kBAAkB,CAAC;QAChD,MAAM,QAAQ,GAAG,yBAAyB,CAAC,MAAM,CAAC,CAAC;QACnD,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAEhD,MAAM,IAAI,GAAG;YACX,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE;YACzD,KAAK,EAAE;gBACL,YAAY,EAAE,QAAQ;gBACtB,IAAI,EAAE,KAAK;aACZ;YACD,WAAW,EAAE;gBACX,aAAa,EAAE,QAAQ;gBACvB,YAAY;aACb;SACF,CAAC;QAEF,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACtB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,OAAO,GAAG,kBAAkB,CAAC,MAAM,CAAC,EAAE;YACrF,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;QAEnC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;YACpC,MAAM,IAAI,KAAK,CACb,iBAAiB,GAAG,IAAI,CAAC,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI;kBAC5D,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CACvB,CAAC;QACJ,CAAC;QAED,IAAI,MAAW,CAAC;QAChB,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAC7B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,yCAAyC,GAAG,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAClH,CAAC;QAED,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,MAAM,CAAC,YAAY,KAAK,QAAQ,EAAE,CAAC;YACrF,MAAM,IAAI,KAAK,CAAC,kDAAkD,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;QACnH,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QACzD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;QACxD,CAAC;QAED,OAAO;YACL,KAAK;YACL,MAAM;YACN,UAAU;YACV,QAAQ,EAAE,IAAI,CAAC,EAAE;YACjB,KAAK;SACN,CAAC;IACJ,CAAC;IAED;qDACiD;IACzC,sBAAsB,CAAC,KAAa;QAC1C,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,CAAE,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1E,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACnC,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,qDAAqD;IAC7C,UAAU,CAAC,KAAyB;QAC1C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAO,GAAG,CAAC;QACrE,IAAI,KAAK,GAAG,IAAI;YAAE,OAAO,IAAI,CAAC;QAC9B,IAAI,KAAK,GAAG,GAAG;YAAE,OAAO,GAAG,CAAC;QAC5B,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAED,6CAA6C;AAC7C,OAAO,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,UAAU,EAAE,CAAC"}
@@ -45,6 +45,16 @@ export declare class VoiceRouter {
45
45
  saveConfig(next: VoiceConfig): Promise<void>;
46
46
  /** Force-reload from disk on the next call. */
47
47
  invalidate(): void;
48
+ /** Resolve an active provider for a kind ("stt" | "tts"). Auto-
49
+ * detect path: if the configured provider has credentials,
50
+ * use it. Otherwise scan all registered providers and pick the
51
+ * first one that is ready. This rescues the common case where
52
+ * BYOK setup only configured one provider (e.g. google) but the
53
+ * config still points to the default (e.g. whisper).
54
+ *
55
+ * Returns the resolved provider id + factory result. Throws
56
+ * with a clear message when NOTHING is ready. */
57
+ private resolveReadyProvider;
48
58
  /** Resolve the active STT provider and pass the request to it. */
49
59
  transcribe(req: SttRequest): Promise<SttResponse>;
50
60
  /** Resolve the active TTS provider and synthesize. */
@@ -1 +1 @@
1
- {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/voice/router.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAIH,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,WAAW,EACjB,MAAM,YAAY,CAAC;AAKpB;+DAC+D;AAC/D,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,GAAG,CAAC,aAAa,EAAE,MAAM,WAAW,CAAC,CAAC;IAC3C,GAAG,EAAE,GAAG,CAAC,aAAa,EAAE,MAAM,WAAW,CAAC,CAAC;CAC5C;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,gBAAgB,CAAC;CAC5B;AAOD,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmB;IAC5C,OAAO,CAAC,YAAY,CAA4B;gBAEpC,IAAI,EAAE,kBAAkB;IAQpC;;qBAEiB;IACX,UAAU,IAAI,OAAO,CAAC,WAAW,CAAC;IA+BxC;gCAC4B;IACtB,UAAU,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBlD,+CAA+C;IAC/C,UAAU,IAAI,IAAI;IAIlB,kEAAkE;IAC5D,UAAU,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC;IA4BvD,sDAAsD;IAChD,UAAU,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC;IAkCvD;gDAC4C;IAC5C,mBAAmB,IAAI;QAAE,GAAG,EAAE,aAAa,EAAE,CAAC;QAAC,GAAG,EAAE,aAAa,EAAE,CAAA;KAAE;YAOvD,OAAO;CAUtB;AAED,iEAAiE;AACjE,wBAAgB,aAAa,IAAI,gBAAgB,CAEhD"}
1
+ {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/voice/router.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAIH,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,WAAW,EACjB,MAAM,YAAY,CAAC;AAKpB;+DAC+D;AAC/D,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,GAAG,CAAC,aAAa,EAAE,MAAM,WAAW,CAAC,CAAC;IAC3C,GAAG,EAAE,GAAG,CAAC,aAAa,EAAE,MAAM,WAAW,CAAC,CAAC;CAC5C;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,gBAAgB,CAAC;CAC5B;AAOD,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmB;IAC5C,OAAO,CAAC,YAAY,CAA4B;gBAEpC,IAAI,EAAE,kBAAkB;IAQpC;;qBAEiB;IACX,UAAU,IAAI,OAAO,CAAC,WAAW,CAAC;IA+BxC;gCAC4B;IACtB,UAAU,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBlD,+CAA+C;IAC/C,UAAU,IAAI,IAAI;IAIlB;;;;;;;;sDAQkD;YACpC,oBAAoB;IAiClC,kEAAkE;IAC5D,UAAU,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC;IAmBvD,sDAAsD;IAChD,UAAU,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC;IAyBvD;gDAC4C;IAC5C,mBAAmB,IAAI;QAAE,GAAG,EAAE,aAAa,EAAE,CAAC;QAAC,GAAG,EAAE,aAAa,EAAE,CAAA;KAAE;YAOvD,OAAO;CAUtB;AAED,iEAAiE;AACjE,wBAAgB,aAAa,IAAI,gBAAgB,CAEhD"}