@inharness-ai/claude4spec 1.0.6 → 1.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +22 -0
- package/dist/client/assets/{arc-CqFoQdai.js → arc-Ri_rE3A4.js} +1 -1
- package/dist/client/assets/{architectureDiagram-3BPJPVTR-CIEQ1CV_.js → architectureDiagram-3BPJPVTR-C7KU6Gxy.js} +1 -1
- package/dist/client/assets/{blockDiagram-GPEHLZMM-DwCCDYZs.js → blockDiagram-GPEHLZMM-XP57kEB6.js} +1 -1
- package/dist/client/assets/{c4Diagram-AAUBKEIU-DB988zZs.js → c4Diagram-AAUBKEIU-vQE6EvG4.js} +1 -1
- package/dist/client/assets/channel-CXaSz-yc.js +1 -0
- package/dist/client/assets/{chunk-2J33WTMH-Bwc9B4Id.js → chunk-2J33WTMH-CDaw1-z0.js} +1 -1
- package/dist/client/assets/{chunk-4BX2VUAB-ClOw-zt3.js → chunk-4BX2VUAB-CdUEf5WH.js} +1 -1
- package/dist/client/assets/{chunk-55IACEB6-B513D_Oz.js → chunk-55IACEB6-CJjUfYKD.js} +1 -1
- package/dist/client/assets/{chunk-727SXJPM-CvT-ppRD.js → chunk-727SXJPM-DkgytNym.js} +1 -1
- package/dist/client/assets/{chunk-AQP2D5EJ-BDZ-uKjF.js → chunk-AQP2D5EJ-B23_HIH8.js} +1 -1
- package/dist/client/assets/{chunk-FMBD7UC4-DlnsCvyP.js → chunk-FMBD7UC4-BOxU6c6d.js} +1 -1
- package/dist/client/assets/{chunk-ND2GUHAM-Cv4kIfqi.js → chunk-ND2GUHAM-DM3Qjus5.js} +1 -1
- package/dist/client/assets/{chunk-QZHKN3VN-Boyq-O-A.js → chunk-QZHKN3VN-CapbZIUP.js} +1 -1
- package/dist/client/assets/classDiagram-4FO5ZUOK-CiPHXsyE.js +1 -0
- package/dist/client/assets/classDiagram-v2-Q7XG4LA2-CiPHXsyE.js +1 -0
- package/dist/client/assets/{cose-bilkent-S5V4N54A-B4fXXqZV.js → cose-bilkent-S5V4N54A-CTNIJ0dY.js} +1 -1
- package/dist/client/assets/{dagre-BM42HDAG-D7JvdAaj.js → dagre-BM42HDAG-BRrO0WSt.js} +1 -1
- package/dist/client/assets/{diagram-2AECGRRQ-TqVC9_06.js → diagram-2AECGRRQ-CMCgz46p.js} +1 -1
- package/dist/client/assets/{diagram-5GNKFQAL-BJE7Sfvp.js → diagram-5GNKFQAL-Be67M_wK.js} +1 -1
- package/dist/client/assets/{diagram-KO2AKTUF-dDI3Q4Xy.js → diagram-KO2AKTUF-C1lam27A.js} +1 -1
- package/dist/client/assets/{diagram-LMA3HP47-zrNXdbAH.js → diagram-LMA3HP47-3u3xFJ_q.js} +1 -1
- package/dist/client/assets/{diagram-OG6HWLK6-C9RoGREB.js → diagram-OG6HWLK6-DIVEfPgU.js} +1 -1
- package/dist/client/assets/{erDiagram-TEJ5UH35-BIOg0Mgx.js → erDiagram-TEJ5UH35-CoXGGm8G.js} +1 -1
- package/dist/client/assets/{flowDiagram-I6XJVG4X-C5olRPEY.js → flowDiagram-I6XJVG4X-CZ5BV_Ix.js} +1 -1
- package/dist/client/assets/{ganttDiagram-6RSMTGT7-Daqt3_2M.js → ganttDiagram-6RSMTGT7-BvPLC5Cv.js} +1 -1
- package/dist/client/assets/{gitGraphDiagram-PVQCEYII-E09LH7cR.js → gitGraphDiagram-PVQCEYII-Dh1ZoVJb.js} +1 -1
- package/dist/client/assets/{index-CMsZQS3t.js → index-BQG2YUwc.js} +1 -1
- package/dist/client/assets/index-C5IzEHNL.js +760 -0
- package/dist/client/assets/{index-BwbjYrNH.js → index-CiSTZTU5.js} +1 -1
- package/dist/client/assets/{index-zpHL2aYW.css → index-b9dqo5lW.css} +1 -1
- package/dist/client/assets/{infoDiagram-5YYISTIA-Cy_D0LmA.js → infoDiagram-5YYISTIA-BuHIm-Jn.js} +1 -1
- package/dist/client/assets/{ishikawaDiagram-YF4QCWOH-B3cvnpaf.js → ishikawaDiagram-YF4QCWOH-I8nVafdM.js} +1 -1
- package/dist/client/assets/{journeyDiagram-JHISSGLW-IR8sEnrO.js → journeyDiagram-JHISSGLW-shtpF1TZ.js} +1 -1
- package/dist/client/assets/{kanban-definition-UN3LZRKU-DHaqk7jz.js → kanban-definition-UN3LZRKU-BsO8TIvo.js} +1 -1
- package/dist/client/assets/{linear-BJO3kbAY.js → linear-C3N1YJbK.js} +1 -1
- package/dist/client/assets/{mermaid.core-Dwygsmt4.js → mermaid.core-DUTTNZnN.js} +4 -4
- package/dist/client/assets/{mindmap-definition-RKZ34NQL-C9XVPJV6.js → mindmap-definition-RKZ34NQL-DEMm3PNd.js} +1 -1
- package/dist/client/assets/{pieDiagram-4H26LBE5-CZldRk6l.js → pieDiagram-4H26LBE5-ZWkz7ewh.js} +1 -1
- package/dist/client/assets/{quadrantDiagram-W4KKPZXB-CY053ghg.js → quadrantDiagram-W4KKPZXB-DSdXKJ0w.js} +1 -1
- package/dist/client/assets/{requirementDiagram-4Y6WPE33-DQbMS7j1.js → requirementDiagram-4Y6WPE33-yqSjbYPV.js} +1 -1
- package/dist/client/assets/{sankeyDiagram-5OEKKPKP-C5w3huvN.js → sankeyDiagram-5OEKKPKP-yXc5bZhC.js} +1 -1
- package/dist/client/assets/{sequenceDiagram-3UESZ5HK-nF1GikPI.js → sequenceDiagram-3UESZ5HK-Z1Nu6haY.js} +1 -1
- package/dist/client/assets/{stateDiagram-AJRCARHV-CxjKXGSz.js → stateDiagram-AJRCARHV-DLVVcNhF.js} +1 -1
- package/dist/client/assets/stateDiagram-v2-BHNVJYJU-DxGjPxxo.js +1 -0
- package/dist/client/assets/{timeline-definition-PNZ67QCA-q0ZvTC5H.js → timeline-definition-PNZ67QCA-3TZN84mA.js} +1 -1
- package/dist/client/assets/{vennDiagram-CIIHVFJN-CO7sztp2.js → vennDiagram-CIIHVFJN-D8QmAxH6.js} +1 -1
- package/dist/client/assets/{wardley-L42UT6IY-JeTZFzC9.js → wardley-L42UT6IY-r7LqMpHU.js} +1 -1
- package/dist/client/assets/{wardleyDiagram-YWT4CUSO-COpCQvmO.js → wardleyDiagram-YWT4CUSO-KQreLEne.js} +1 -1
- package/dist/client/assets/{xychartDiagram-2RQKCTM6-C78ptl5b.js → xychartDiagram-2RQKCTM6-Bxy2QkZl.js} +1 -1
- package/dist/client/index.html +2 -2
- package/dist/server/config.d.ts +13 -0
- package/dist/server/config.js +27 -0
- package/dist/server/config.js.map +1 -1
- package/dist/server/db/migrations/030_remote_session.sql +29 -0
- package/dist/server/db/migrations/031_release_push.sql +39 -0
- package/dist/server/entities/ac/system-prompt.js +6 -6
- package/dist/server/entities/ac/system-prompt.js.map +1 -1
- package/dist/server/index.js +35 -2
- package/dist/server/index.js.map +1 -1
- package/dist/server/routes/errors.js +10 -0
- package/dist/server/routes/errors.js.map +1 -1
- package/dist/server/routes/release-pushes.d.ts +10 -0
- package/dist/server/routes/release-pushes.js +68 -0
- package/dist/server/routes/release-pushes.js.map +1 -0
- package/dist/server/routes/releases.js +9 -0
- package/dist/server/routes/releases.js.map +1 -1
- package/dist/server/routes/remote-account.d.ts +8 -0
- package/dist/server/routes/remote-account.js +49 -0
- package/dist/server/routes/remote-account.js.map +1 -0
- package/dist/server/services/brief.d.ts +2 -0
- package/dist/server/services/brief.js +10 -0
- package/dist/server/services/brief.js.map +1 -1
- package/dist/server/services/plan.js +6 -6
- package/dist/server/services/plan.js.map +1 -1
- package/dist/server/services/release-bundle.d.ts +92 -0
- package/dist/server/services/release-bundle.js +183 -0
- package/dist/server/services/release-bundle.js.map +1 -0
- package/dist/server/services/release-push.d.ts +38 -0
- package/dist/server/services/release-push.js +179 -0
- package/dist/server/services/release-push.js.map +1 -0
- package/dist/server/services/release.d.ts +39 -1
- package/dist/server/services/release.js +53 -1
- package/dist/server/services/release.js.map +1 -1
- package/dist/server/services/remote-auth.d.ts +56 -0
- package/dist/server/services/remote-auth.js +161 -0
- package/dist/server/services/remote-auth.js.map +1 -0
- package/dist/server/services/remote-http-client.d.ts +136 -0
- package/dist/server/services/remote-http-client.js +172 -0
- package/dist/server/services/remote-http-client.js.map +1 -0
- package/dist/shared/release-push.d.ts +49 -0
- package/dist/shared/release-push.js +9 -0
- package/dist/shared/release-push.js.map +1 -0
- package/dist/shared/remote-account.d.ts +58 -0
- package/dist/shared/remote-account.js +8 -0
- package/dist/shared/remote-account.js.map +1 -0
- package/dist/shared/types.d.ts +1 -0
- package/package.json +2 -1
- package/dist/client/assets/channel-mXCQ_joU.js +0 -1
- package/dist/client/assets/classDiagram-4FO5ZUOK-CvLk0Sg1.js +0 -1
- package/dist/client/assets/classDiagram-v2-Q7XG4LA2-CvLk0Sg1.js +0 -1
- package/dist/client/assets/index-CUhhC6SY.js +0 -742
- package/dist/client/assets/stateDiagram-v2-BHNVJYJU-CLYCEwSk.js +0 -1
|
@@ -9,6 +9,8 @@
|
|
|
9
9
|
*/
|
|
10
10
|
import { DomainError } from './tags.js';
|
|
11
11
|
import { HostEntityWriter } from './entity-writer.js';
|
|
12
|
+
import { readConfig } from '../config.js';
|
|
13
|
+
import { buildBundleArchive as buildBundleArchiveImpl, } from './release-bundle.js';
|
|
12
14
|
const ENTITY_TYPES = ['endpoint', 'dto', 'database-table', 'ui-view', 'ac'];
|
|
13
15
|
const ENTITY_TABLES = {
|
|
14
16
|
endpoint: 'endpoint',
|
|
@@ -27,7 +29,8 @@ export class ReleaseService {
|
|
|
27
29
|
tagsService;
|
|
28
30
|
pagesService;
|
|
29
31
|
watcher;
|
|
30
|
-
|
|
32
|
+
cwd;
|
|
33
|
+
constructor(db, host, versions, pageVersions, pageSerializer, rawReader, tagsService, pagesService, watcher = null, cwd = process.cwd()) {
|
|
31
34
|
this.db = db;
|
|
32
35
|
this.host = host;
|
|
33
36
|
this.versions = versions;
|
|
@@ -37,6 +40,7 @@ export class ReleaseService {
|
|
|
37
40
|
this.tagsService = tagsService;
|
|
38
41
|
this.pagesService = pagesService;
|
|
39
42
|
this.watcher = watcher;
|
|
43
|
+
this.cwd = cwd;
|
|
40
44
|
}
|
|
41
45
|
// ─── Listing & retrieval ─────────────────────────────────────────────────
|
|
42
46
|
listReleases() {
|
|
@@ -52,6 +56,17 @@ export class ReleaseService {
|
|
|
52
56
|
const release = this.toRelease(row);
|
|
53
57
|
return { ...release, countBreakdown: this.computeCountBreakdown(row.id) };
|
|
54
58
|
}
|
|
59
|
+
/**
|
|
60
|
+
* Count of captures still queued at HEAD — entity_version + page_version rows
|
|
61
|
+
* with `release_id IS NULL`. Drives the M25 "You have N unreleased changes"
|
|
62
|
+
* banner shown only on the latest (mutable) release card.
|
|
63
|
+
*/
|
|
64
|
+
countUnreleased() {
|
|
65
|
+
const row = this.db
|
|
66
|
+
.prepare(`SELECT COUNT(*) AS n FROM entity_version WHERE release_id IS NULL`)
|
|
67
|
+
.get();
|
|
68
|
+
return row.n + this.pageVersions.countUnreleased();
|
|
69
|
+
}
|
|
55
70
|
// ─── Mutations ───────────────────────────────────────────────────────────
|
|
56
71
|
/**
|
|
57
72
|
* Manual release creation (decyzja 9: zero auto-trigger). Validates
|
|
@@ -457,6 +472,43 @@ export class ReleaseService {
|
|
|
457
472
|
}
|
|
458
473
|
return { releaseId, entityResults, pageResults };
|
|
459
474
|
}
|
|
475
|
+
// ─── Portable bundle (transport format — M25 push / M26 import) ────────────
|
|
476
|
+
/**
|
|
477
|
+
* Build a portable `tar.gz` of release N, deterministically reconstructed
|
|
478
|
+
* from the versioning tables (`getReleaseSnapshot`) + sanitized `config.json`.
|
|
479
|
+
* Does NOT read `pagesDir` on disk nor entity HEADs. The returned `tarGzPath`
|
|
480
|
+
* points at a temp file the CALLER owns (M25 deletes after streaming to
|
|
481
|
+
* remote); the internal working dir is cleaned up before returning.
|
|
482
|
+
*/
|
|
483
|
+
async buildBundleArchive(releaseId) {
|
|
484
|
+
const snapshot = this.getReleaseSnapshot(releaseId); // throws NOT_FOUND if missing
|
|
485
|
+
const release = this.getRelease(releaseId);
|
|
486
|
+
return buildBundleArchiveImpl(snapshot, release, readConfig(this.cwd));
|
|
487
|
+
}
|
|
488
|
+
/**
|
|
489
|
+
* CONTRACT-ONLY in v1 — implementation deferred to M26 (Release Import,
|
|
490
|
+
* `c4s import <bundle>`). The signature is public so the bidirectional bundle
|
|
491
|
+
* contract is fixed now (write here, read in M26).
|
|
492
|
+
*
|
|
493
|
+
* M26 read-direction algorithm (do not implement here):
|
|
494
|
+
* 1. Parse `manifest.json` FIRST (first tar entry). Missing → throw
|
|
495
|
+
* `BUNDLE_MANIFEST_MISSING`. `bundleSchemaVersion` > max supported →
|
|
496
|
+
* throw `BUNDLE_SCHEMA_UNSUPPORTED { foundVersion, maxSupportedVersion }`.
|
|
497
|
+
* 2. Optionally verify SHA-256 (caller supplies expected hash, e.g. from an
|
|
498
|
+
* M25 push header). Mismatch → throw `BUNDLE_HASH_MISMATCH { expected, actual }`.
|
|
499
|
+
* 3. Read `config.json` via a `bundleSchemaVersion`-aware parser; unknown
|
|
500
|
+
* fields → warn + ignore (forward-compat).
|
|
501
|
+
* 4. Stream `pages/<path>.md`; reject `..` / absolute / null-byte paths →
|
|
502
|
+
* throw `BUNDLE_MALFORMED_ENTRY { path, reason }`.
|
|
503
|
+
* 5. Stream `entities/<typePlural>.json`; plural absent from local
|
|
504
|
+
* `config.entities` → throw `BUNDLE_UNKNOWN_ENTITY_TYPE { type }`.
|
|
505
|
+
* 6. Compose a `SpecSnapshot` (same shape as `getReleaseSnapshot`). M26 owns
|
|
506
|
+
* what to do with it (UPSERT restore / dry-run diff / read-only mount).
|
|
507
|
+
* All errors are structured (code + payload), never bare strings.
|
|
508
|
+
*/
|
|
509
|
+
async restoreBundleArchive(_stream) {
|
|
510
|
+
throw new Error('NOT_IMPLEMENTED — restoreBundleArchive deferred to M26 (Release Import)');
|
|
511
|
+
}
|
|
460
512
|
// ─── Internals ───────────────────────────────────────────────────────────
|
|
461
513
|
findReleaseRow(idOrName) {
|
|
462
514
|
if (typeof idOrName === 'number') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"release.js","sourceRoot":"","sources":["../../../src/server/services/release.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"release.js","sourceRoot":"","sources":["../../../src/server/services/release.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import type Database from 'better-sqlite3';
|
|
2
|
+
import { RemoteHttpClient } from './remote-http-client.js';
|
|
3
|
+
import type { DeviceLoginPollResponse, DeviceLoginStartResponse, RemoteAccountResponse } from '../../shared/remote-account.js';
|
|
4
|
+
/** Input to `RemoteAuthService.pushBundle` — bytes-derived values come from M17. */
|
|
5
|
+
export interface PushBundleInput {
|
|
6
|
+
tarGzPath: string;
|
|
7
|
+
sizeBytes: number;
|
|
8
|
+
sha256: string;
|
|
9
|
+
/** Sent as `X-Project-Name` on first push (config.name). */
|
|
10
|
+
projectName: string;
|
|
11
|
+
/** `null` ⇒ first push (create project); a UUID ⇒ subsequent push. */
|
|
12
|
+
remoteProjectId: string | null;
|
|
13
|
+
}
|
|
14
|
+
/** Unified outcome from a push, regardless of first vs subsequent endpoint. */
|
|
15
|
+
export interface PushBundleOutcome {
|
|
16
|
+
remoteProjectId: string;
|
|
17
|
+
remoteReleaseId: string;
|
|
18
|
+
remoteReleaseSequence: number;
|
|
19
|
+
deduplicated: boolean;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* M24 — authenticates c4s against the remote API via OAuth Device Authorization
|
|
23
|
+
* Grant. Login is a human action (no MCP tool): the agent never logs in or
|
|
24
|
+
* touches the device flow. The token is an operational secret kept in
|
|
25
|
+
* `remote_session` and never returned to the UI.
|
|
26
|
+
*/
|
|
27
|
+
export declare class RemoteAuthService {
|
|
28
|
+
private db;
|
|
29
|
+
private client;
|
|
30
|
+
private flow;
|
|
31
|
+
constructor(db: Database.Database, client: RemoteHttpClient);
|
|
32
|
+
/** POST /api/remote-account/login/start. */
|
|
33
|
+
startDeviceFlow(): Promise<DeviceLoginStartResponse>;
|
|
34
|
+
/** POST /api/remote-account/login/poll. */
|
|
35
|
+
pollDeviceFlow(): Promise<DeviceLoginPollResponse>;
|
|
36
|
+
/** GET /api/remote-account. Never exposes access_token. */
|
|
37
|
+
getCurrentAccount(): RemoteAccountResponse;
|
|
38
|
+
/** POST /api/remote-account/logout. Idempotent; also aborts an in-flight device flow. */
|
|
39
|
+
logout(): RemoteAccountResponse;
|
|
40
|
+
/**
|
|
41
|
+
* M25 consumer entry point — transports a release bundle to the remote with the
|
|
42
|
+
* Bearer injected from the local session. First push (`remoteProjectId === null`)
|
|
43
|
+
* creates the project; subsequent pushes append a release. The access_token never
|
|
44
|
+
* leaves M24. On 401 the single-row `remote_session` is atomically wiped (same as
|
|
45
|
+
* logout) and the `RemoteUnauthorizedError` is re-thrown for M25 to map to 502.
|
|
46
|
+
*/
|
|
47
|
+
pushBundle(input: PushBundleInput): Promise<PushBundleOutcome>;
|
|
48
|
+
private readSession;
|
|
49
|
+
/**
|
|
50
|
+
* Fetch the account profile (email/status), then atomically replace the
|
|
51
|
+
* single `remote_session` row. Profile-first so a failed enrich never leaves
|
|
52
|
+
* a half-written row; a 401 here means the freshly-issued token was already
|
|
53
|
+
* rejected — surface as unauthenticated without persisting.
|
|
54
|
+
*/
|
|
55
|
+
private persistSession;
|
|
56
|
+
}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
import { DomainError } from './tags.js';
|
|
2
|
+
import { RemoteUnauthorizedError, } from './remote-http-client.js';
|
|
3
|
+
/**
|
|
4
|
+
* M24 — authenticates c4s against the remote API via OAuth Device Authorization
|
|
5
|
+
* Grant. Login is a human action (no MCP tool): the agent never logs in or
|
|
6
|
+
* touches the device flow. The token is an operational secret kept in
|
|
7
|
+
* `remote_session` and never returned to the UI.
|
|
8
|
+
*/
|
|
9
|
+
export class RemoteAuthService {
|
|
10
|
+
db;
|
|
11
|
+
client;
|
|
12
|
+
flow = null;
|
|
13
|
+
constructor(db, client) {
|
|
14
|
+
this.db = db;
|
|
15
|
+
this.client = client;
|
|
16
|
+
}
|
|
17
|
+
/** POST /api/remote-account/login/start. */
|
|
18
|
+
async startDeviceFlow() {
|
|
19
|
+
const r = await this.client.startDeviceFlow();
|
|
20
|
+
this.flow = {
|
|
21
|
+
deviceCode: r.device_code,
|
|
22
|
+
interval: r.interval,
|
|
23
|
+
expiresAt: Date.now() + r.expires_in * 1000,
|
|
24
|
+
};
|
|
25
|
+
// device_code is intentionally NOT returned — the backend supplies it when polling.
|
|
26
|
+
return {
|
|
27
|
+
user_code: r.user_code,
|
|
28
|
+
verification_uri: r.verification_uri,
|
|
29
|
+
verification_uri_complete: r.verification_uri_complete,
|
|
30
|
+
interval: r.interval,
|
|
31
|
+
expires_in: r.expires_in,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
/** POST /api/remote-account/login/poll. */
|
|
35
|
+
async pollDeviceFlow() {
|
|
36
|
+
if (!this.flow) {
|
|
37
|
+
throw new DomainError('NO_ACTIVE_FLOW', 'no active device flow; call login/start first');
|
|
38
|
+
}
|
|
39
|
+
const result = await this.client.pollDeviceToken(this.flow.deviceCode);
|
|
40
|
+
if (result.ok) {
|
|
41
|
+
const account = await this.persistSession(result.token);
|
|
42
|
+
this.flow = null;
|
|
43
|
+
return { status: 'authorized', account };
|
|
44
|
+
}
|
|
45
|
+
const status = mapPollStatus(result.error);
|
|
46
|
+
if (status === 'slow_down') {
|
|
47
|
+
this.flow.interval += 5; // RFC 8628: back off by a fixed step
|
|
48
|
+
return { status, interval: this.flow.interval };
|
|
49
|
+
}
|
|
50
|
+
if (status !== 'pending') {
|
|
51
|
+
this.flow = null; // terminal — drop the flow
|
|
52
|
+
return { status, message: result.description };
|
|
53
|
+
}
|
|
54
|
+
return { status }; // pending — keep polling
|
|
55
|
+
}
|
|
56
|
+
/** GET /api/remote-account. Never exposes access_token. */
|
|
57
|
+
getCurrentAccount() {
|
|
58
|
+
const row = this.readSession();
|
|
59
|
+
return row ? toRemoteAccount(row) : { connected: false };
|
|
60
|
+
}
|
|
61
|
+
/** POST /api/remote-account/logout. Idempotent; also aborts an in-flight device flow. */
|
|
62
|
+
logout() {
|
|
63
|
+
this.flow = null;
|
|
64
|
+
this.db.prepare('DELETE FROM remote_session').run();
|
|
65
|
+
return { connected: false };
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* M25 consumer entry point — transports a release bundle to the remote with the
|
|
69
|
+
* Bearer injected from the local session. First push (`remoteProjectId === null`)
|
|
70
|
+
* creates the project; subsequent pushes append a release. The access_token never
|
|
71
|
+
* leaves M24. On 401 the single-row `remote_session` is atomically wiped (same as
|
|
72
|
+
* logout) and the `RemoteUnauthorizedError` is re-thrown for M25 to map to 502.
|
|
73
|
+
*/
|
|
74
|
+
async pushBundle(input) {
|
|
75
|
+
const row = this.readSession();
|
|
76
|
+
if (!row)
|
|
77
|
+
throw new DomainError('NOT_CONNECTED', 'not connected to the remote server');
|
|
78
|
+
const payload = { tarGzPath: input.tarGzPath, sizeBytes: input.sizeBytes, sha256: input.sha256 };
|
|
79
|
+
try {
|
|
80
|
+
if (input.remoteProjectId === null) {
|
|
81
|
+
const res = await this.client.createProject(row.access_token, payload, input.projectName);
|
|
82
|
+
return {
|
|
83
|
+
remoteProjectId: res.project.id,
|
|
84
|
+
remoteReleaseId: res.release.id,
|
|
85
|
+
remoteReleaseSequence: res.release.sequence,
|
|
86
|
+
deduplicated: false,
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
const res = await this.client.pushRelease(row.access_token, input.remoteProjectId, payload);
|
|
90
|
+
return {
|
|
91
|
+
remoteProjectId: input.remoteProjectId,
|
|
92
|
+
remoteReleaseId: res.release.id,
|
|
93
|
+
remoteReleaseSequence: res.release.sequence,
|
|
94
|
+
deduplicated: res.deduplicated,
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
catch (err) {
|
|
98
|
+
if (err instanceof RemoteUnauthorizedError) {
|
|
99
|
+
this.db.prepare('DELETE FROM remote_session').run();
|
|
100
|
+
}
|
|
101
|
+
throw err;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
// --- internals ----------------------------------------------------------
|
|
105
|
+
readSession() {
|
|
106
|
+
return (this.db.prepare('SELECT * FROM remote_session LIMIT 1').get() ?? null);
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Fetch the account profile (email/status), then atomically replace the
|
|
110
|
+
* single `remote_session` row. Profile-first so a failed enrich never leaves
|
|
111
|
+
* a half-written row; a 401 here means the freshly-issued token was already
|
|
112
|
+
* rejected — surface as unauthenticated without persisting.
|
|
113
|
+
*/
|
|
114
|
+
async persistSession(token) {
|
|
115
|
+
let profile;
|
|
116
|
+
try {
|
|
117
|
+
profile = await this.client.getAccount(token.access_token);
|
|
118
|
+
}
|
|
119
|
+
catch (err) {
|
|
120
|
+
if (err instanceof RemoteUnauthorizedError) {
|
|
121
|
+
throw new DomainError('REMOTE_UNAUTHORIZED', 'remote session expired; log in again');
|
|
122
|
+
}
|
|
123
|
+
throw err;
|
|
124
|
+
}
|
|
125
|
+
const tx = this.db.transaction(() => {
|
|
126
|
+
this.db.prepare('DELETE FROM remote_session').run();
|
|
127
|
+
this.db
|
|
128
|
+
.prepare(`INSERT INTO remote_session
|
|
129
|
+
(access_token, token_id, issued_at, remote_account_id, account_email, account_status)
|
|
130
|
+
VALUES (?, ?, ?, ?, ?, ?)`)
|
|
131
|
+
.run(token.access_token, token.token_id, token.issued_at, token.account_id, profile.email, profile.status);
|
|
132
|
+
});
|
|
133
|
+
tx();
|
|
134
|
+
return this.getCurrentAccount();
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
/** Maps the remote device-token enum onto M24's own poll-status enum. */
|
|
138
|
+
function mapPollStatus(error) {
|
|
139
|
+
switch (error) {
|
|
140
|
+
case 'authorization_pending':
|
|
141
|
+
return 'pending';
|
|
142
|
+
case 'slow_down':
|
|
143
|
+
return 'slow_down';
|
|
144
|
+
case 'expired_token':
|
|
145
|
+
return 'expired';
|
|
146
|
+
case 'access_denied':
|
|
147
|
+
return 'denied';
|
|
148
|
+
case 'invalid_grant':
|
|
149
|
+
return 'invalid';
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
function toRemoteAccount(row) {
|
|
153
|
+
return {
|
|
154
|
+
connected: true,
|
|
155
|
+
remoteAccountId: row.remote_account_id,
|
|
156
|
+
accountEmail: row.account_email,
|
|
157
|
+
accountStatus: row.account_status === 'deactivated' ? 'deactivated' : 'active',
|
|
158
|
+
connectedAt: row.connected_at,
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
//# sourceMappingURL=remote-auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remote-auth.js","sourceRoot":"","sources":["../../../src/server/services/remote-auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* M24 — the single abstraction over `fetch` to the remote claude4spec-API.
|
|
3
|
+
* Owned by M24, consumed by future M25; no other module talks to the remote
|
|
4
|
+
* directly. Base URL = `config.remoteApiUrl ?? PROD_REMOTE_URL` (the override is
|
|
5
|
+
* dev/staging only — it is never persisted to `remote_session`, never logged,
|
|
6
|
+
* and is not a secret). The Bearer is injected into owner-only calls only;
|
|
7
|
+
* `/v1/auth/device/*` are unauthenticated.
|
|
8
|
+
*
|
|
9
|
+
* The remote wire contracts mirrored below are the claude4spec-api M02/M03 DTOs
|
|
10
|
+
* (`@c4s/types`), duplicated here as local interfaces because the two repos do
|
|
11
|
+
* not share a package.
|
|
12
|
+
*/
|
|
13
|
+
/** Hardcoded production remote. `config.remoteApiUrl` overrides for dev/staging. */
|
|
14
|
+
export declare const PROD_REMOTE_URL = "https://claude4spec.inharness.ai";
|
|
15
|
+
export interface DeviceCodeResponse {
|
|
16
|
+
device_code: string;
|
|
17
|
+
user_code: string;
|
|
18
|
+
verification_uri: string;
|
|
19
|
+
verification_uri_complete: string;
|
|
20
|
+
expires_in: number;
|
|
21
|
+
interval: number;
|
|
22
|
+
}
|
|
23
|
+
export interface DeviceTokenResponse {
|
|
24
|
+
access_token: string;
|
|
25
|
+
token_type: 'Bearer';
|
|
26
|
+
token_id: string;
|
|
27
|
+
account_id: string;
|
|
28
|
+
issued_at: string;
|
|
29
|
+
}
|
|
30
|
+
export type DeviceTokenError = 'authorization_pending' | 'slow_down' | 'expired_token' | 'access_denied' | 'invalid_grant';
|
|
31
|
+
export interface DeviceTokenErrorResponse {
|
|
32
|
+
error: DeviceTokenError;
|
|
33
|
+
error_description?: string;
|
|
34
|
+
}
|
|
35
|
+
export type AccountStatus = 'active' | 'deactivated';
|
|
36
|
+
export interface AccountProfileResponse {
|
|
37
|
+
id: string;
|
|
38
|
+
email: string;
|
|
39
|
+
status: AccountStatus;
|
|
40
|
+
}
|
|
41
|
+
/** Release meta echoed by both push endpoints (claude4spec-api M02/M03). */
|
|
42
|
+
export interface RemoteReleaseMeta {
|
|
43
|
+
id: string;
|
|
44
|
+
projectId: string;
|
|
45
|
+
sequence: number;
|
|
46
|
+
contentSha256: string;
|
|
47
|
+
contentSizeBytes: number;
|
|
48
|
+
createdAt: string;
|
|
49
|
+
pushedBy: {
|
|
50
|
+
accountId: string;
|
|
51
|
+
tokenId: string | null;
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
/** `POST /v1/projects` (first push) — creates a project and its first release. */
|
|
55
|
+
export interface CreateProjectResponse {
|
|
56
|
+
project: {
|
|
57
|
+
id: string;
|
|
58
|
+
slug: string;
|
|
59
|
+
name: string;
|
|
60
|
+
description: string | null;
|
|
61
|
+
createdAt: string;
|
|
62
|
+
};
|
|
63
|
+
release: RemoteReleaseMeta;
|
|
64
|
+
}
|
|
65
|
+
/** `POST /v1/projects/:id/releases` (subsequent push). 201 fresh / 200 dedup. */
|
|
66
|
+
export interface PushReleaseResponse {
|
|
67
|
+
release: RemoteReleaseMeta;
|
|
68
|
+
deduplicated: boolean;
|
|
69
|
+
}
|
|
70
|
+
/** Bytes-derived inputs for a push, all sourced from M17.buildBundleArchive. */
|
|
71
|
+
export interface PushBundlePayload {
|
|
72
|
+
tarGzPath: string;
|
|
73
|
+
sizeBytes: number;
|
|
74
|
+
sha256: string;
|
|
75
|
+
}
|
|
76
|
+
/** Result of the polling exchange: a one-time success or a polling-state error. */
|
|
77
|
+
export type DeviceTokenResult = {
|
|
78
|
+
ok: true;
|
|
79
|
+
token: DeviceTokenResponse;
|
|
80
|
+
} | {
|
|
81
|
+
ok: false;
|
|
82
|
+
error: DeviceTokenError;
|
|
83
|
+
description?: string;
|
|
84
|
+
};
|
|
85
|
+
/**
|
|
86
|
+
* Thrown when an owner-only remote call returns 401 — the caller must clear the
|
|
87
|
+
* local `remote_session` and force a fresh device flow.
|
|
88
|
+
*/
|
|
89
|
+
export declare class RemoteUnauthorizedError extends Error {
|
|
90
|
+
constructor(message?: string);
|
|
91
|
+
}
|
|
92
|
+
/** Thrown for transport-level failures (connection refused / 5xx / unexpected shape). */
|
|
93
|
+
export declare class RemoteRequestError extends Error {
|
|
94
|
+
status?: number | undefined;
|
|
95
|
+
constructor(message: string, status?: number | undefined);
|
|
96
|
+
}
|
|
97
|
+
export declare class RemoteHttpClient {
|
|
98
|
+
private readonly baseUrl;
|
|
99
|
+
constructor(remoteApiUrl: string | null | undefined);
|
|
100
|
+
get base(): string;
|
|
101
|
+
/** POST /v1/auth/device/code — unauthenticated. Initiates the device flow. */
|
|
102
|
+
startDeviceFlow(): Promise<DeviceCodeResponse>;
|
|
103
|
+
/**
|
|
104
|
+
* POST /v1/auth/device/token — unauthenticated, authorized by the device_code
|
|
105
|
+
* itself. 200 → token (issued once); 400 → polling-state envelope
|
|
106
|
+
* (authorization_pending / slow_down / terminal).
|
|
107
|
+
*/
|
|
108
|
+
pollDeviceToken(deviceCode: string): Promise<DeviceTokenResult>;
|
|
109
|
+
/** GET /v1/account — owner-only (Bearer). 401 → RemoteUnauthorizedError. */
|
|
110
|
+
getAccount(accessToken: string): Promise<AccountProfileResponse>;
|
|
111
|
+
/**
|
|
112
|
+
* POST /v1/projects — first push. Streams the bundle as octet-stream and
|
|
113
|
+
* creates a new remote project named `projectName`. 401 → RemoteUnauthorizedError;
|
|
114
|
+
* any other non-2xx → RemoteRequestError (message from the remote error envelope).
|
|
115
|
+
*/
|
|
116
|
+
createProject(accessToken: string, payload: PushBundlePayload, projectName: string): Promise<CreateProjectResponse>;
|
|
117
|
+
/**
|
|
118
|
+
* POST /v1/projects/:remoteProjectId/releases — subsequent push (no
|
|
119
|
+
* X-Project-Name). 200 = deduplicated hit, 201 = fresh release; both carry the
|
|
120
|
+
* `deduplicated` flag. 401 → RemoteUnauthorizedError; other non-2xx → RemoteRequestError.
|
|
121
|
+
*/
|
|
122
|
+
pushRelease(accessToken: string, remoteProjectId: string, payload: PushBundlePayload): Promise<PushReleaseResponse>;
|
|
123
|
+
/** Streams `tarGzPath` as application/octet-stream with the integrity + auth headers. */
|
|
124
|
+
private streamBundle;
|
|
125
|
+
/** Best-effort human message from a remote error response (`{error:{message|code}}` or NestJS `{message}`). */
|
|
126
|
+
private errorMessageFrom;
|
|
127
|
+
private fetchRemote;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Startup reachability check for an explicit `config.remoteApiUrl` override.
|
|
131
|
+
* "Reachable" = the host answers at all (any HTTP status); only a transport
|
|
132
|
+
* failure / timeout counts as unreachable. No fallback to PROD_REMOTE_URL — an
|
|
133
|
+
* explicit override must be honoured or reported (brief §1). Throws with the
|
|
134
|
+
* exact contract message.
|
|
135
|
+
*/
|
|
136
|
+
export declare function assertRemoteApiReachable(remoteApiUrl: string, timeoutMs?: number): Promise<void>;
|