@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.
Files changed (103) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/dist/client/assets/{arc-CqFoQdai.js → arc-Ri_rE3A4.js} +1 -1
  3. package/dist/client/assets/{architectureDiagram-3BPJPVTR-CIEQ1CV_.js → architectureDiagram-3BPJPVTR-C7KU6Gxy.js} +1 -1
  4. package/dist/client/assets/{blockDiagram-GPEHLZMM-DwCCDYZs.js → blockDiagram-GPEHLZMM-XP57kEB6.js} +1 -1
  5. package/dist/client/assets/{c4Diagram-AAUBKEIU-DB988zZs.js → c4Diagram-AAUBKEIU-vQE6EvG4.js} +1 -1
  6. package/dist/client/assets/channel-CXaSz-yc.js +1 -0
  7. package/dist/client/assets/{chunk-2J33WTMH-Bwc9B4Id.js → chunk-2J33WTMH-CDaw1-z0.js} +1 -1
  8. package/dist/client/assets/{chunk-4BX2VUAB-ClOw-zt3.js → chunk-4BX2VUAB-CdUEf5WH.js} +1 -1
  9. package/dist/client/assets/{chunk-55IACEB6-B513D_Oz.js → chunk-55IACEB6-CJjUfYKD.js} +1 -1
  10. package/dist/client/assets/{chunk-727SXJPM-CvT-ppRD.js → chunk-727SXJPM-DkgytNym.js} +1 -1
  11. package/dist/client/assets/{chunk-AQP2D5EJ-BDZ-uKjF.js → chunk-AQP2D5EJ-B23_HIH8.js} +1 -1
  12. package/dist/client/assets/{chunk-FMBD7UC4-DlnsCvyP.js → chunk-FMBD7UC4-BOxU6c6d.js} +1 -1
  13. package/dist/client/assets/{chunk-ND2GUHAM-Cv4kIfqi.js → chunk-ND2GUHAM-DM3Qjus5.js} +1 -1
  14. package/dist/client/assets/{chunk-QZHKN3VN-Boyq-O-A.js → chunk-QZHKN3VN-CapbZIUP.js} +1 -1
  15. package/dist/client/assets/classDiagram-4FO5ZUOK-CiPHXsyE.js +1 -0
  16. package/dist/client/assets/classDiagram-v2-Q7XG4LA2-CiPHXsyE.js +1 -0
  17. package/dist/client/assets/{cose-bilkent-S5V4N54A-B4fXXqZV.js → cose-bilkent-S5V4N54A-CTNIJ0dY.js} +1 -1
  18. package/dist/client/assets/{dagre-BM42HDAG-D7JvdAaj.js → dagre-BM42HDAG-BRrO0WSt.js} +1 -1
  19. package/dist/client/assets/{diagram-2AECGRRQ-TqVC9_06.js → diagram-2AECGRRQ-CMCgz46p.js} +1 -1
  20. package/dist/client/assets/{diagram-5GNKFQAL-BJE7Sfvp.js → diagram-5GNKFQAL-Be67M_wK.js} +1 -1
  21. package/dist/client/assets/{diagram-KO2AKTUF-dDI3Q4Xy.js → diagram-KO2AKTUF-C1lam27A.js} +1 -1
  22. package/dist/client/assets/{diagram-LMA3HP47-zrNXdbAH.js → diagram-LMA3HP47-3u3xFJ_q.js} +1 -1
  23. package/dist/client/assets/{diagram-OG6HWLK6-C9RoGREB.js → diagram-OG6HWLK6-DIVEfPgU.js} +1 -1
  24. package/dist/client/assets/{erDiagram-TEJ5UH35-BIOg0Mgx.js → erDiagram-TEJ5UH35-CoXGGm8G.js} +1 -1
  25. package/dist/client/assets/{flowDiagram-I6XJVG4X-C5olRPEY.js → flowDiagram-I6XJVG4X-CZ5BV_Ix.js} +1 -1
  26. package/dist/client/assets/{ganttDiagram-6RSMTGT7-Daqt3_2M.js → ganttDiagram-6RSMTGT7-BvPLC5Cv.js} +1 -1
  27. package/dist/client/assets/{gitGraphDiagram-PVQCEYII-E09LH7cR.js → gitGraphDiagram-PVQCEYII-Dh1ZoVJb.js} +1 -1
  28. package/dist/client/assets/{index-CMsZQS3t.js → index-BQG2YUwc.js} +1 -1
  29. package/dist/client/assets/index-C5IzEHNL.js +760 -0
  30. package/dist/client/assets/{index-BwbjYrNH.js → index-CiSTZTU5.js} +1 -1
  31. package/dist/client/assets/{index-zpHL2aYW.css → index-b9dqo5lW.css} +1 -1
  32. package/dist/client/assets/{infoDiagram-5YYISTIA-Cy_D0LmA.js → infoDiagram-5YYISTIA-BuHIm-Jn.js} +1 -1
  33. package/dist/client/assets/{ishikawaDiagram-YF4QCWOH-B3cvnpaf.js → ishikawaDiagram-YF4QCWOH-I8nVafdM.js} +1 -1
  34. package/dist/client/assets/{journeyDiagram-JHISSGLW-IR8sEnrO.js → journeyDiagram-JHISSGLW-shtpF1TZ.js} +1 -1
  35. package/dist/client/assets/{kanban-definition-UN3LZRKU-DHaqk7jz.js → kanban-definition-UN3LZRKU-BsO8TIvo.js} +1 -1
  36. package/dist/client/assets/{linear-BJO3kbAY.js → linear-C3N1YJbK.js} +1 -1
  37. package/dist/client/assets/{mermaid.core-Dwygsmt4.js → mermaid.core-DUTTNZnN.js} +4 -4
  38. package/dist/client/assets/{mindmap-definition-RKZ34NQL-C9XVPJV6.js → mindmap-definition-RKZ34NQL-DEMm3PNd.js} +1 -1
  39. package/dist/client/assets/{pieDiagram-4H26LBE5-CZldRk6l.js → pieDiagram-4H26LBE5-ZWkz7ewh.js} +1 -1
  40. package/dist/client/assets/{quadrantDiagram-W4KKPZXB-CY053ghg.js → quadrantDiagram-W4KKPZXB-DSdXKJ0w.js} +1 -1
  41. package/dist/client/assets/{requirementDiagram-4Y6WPE33-DQbMS7j1.js → requirementDiagram-4Y6WPE33-yqSjbYPV.js} +1 -1
  42. package/dist/client/assets/{sankeyDiagram-5OEKKPKP-C5w3huvN.js → sankeyDiagram-5OEKKPKP-yXc5bZhC.js} +1 -1
  43. package/dist/client/assets/{sequenceDiagram-3UESZ5HK-nF1GikPI.js → sequenceDiagram-3UESZ5HK-Z1Nu6haY.js} +1 -1
  44. package/dist/client/assets/{stateDiagram-AJRCARHV-CxjKXGSz.js → stateDiagram-AJRCARHV-DLVVcNhF.js} +1 -1
  45. package/dist/client/assets/stateDiagram-v2-BHNVJYJU-DxGjPxxo.js +1 -0
  46. package/dist/client/assets/{timeline-definition-PNZ67QCA-q0ZvTC5H.js → timeline-definition-PNZ67QCA-3TZN84mA.js} +1 -1
  47. package/dist/client/assets/{vennDiagram-CIIHVFJN-CO7sztp2.js → vennDiagram-CIIHVFJN-D8QmAxH6.js} +1 -1
  48. package/dist/client/assets/{wardley-L42UT6IY-JeTZFzC9.js → wardley-L42UT6IY-r7LqMpHU.js} +1 -1
  49. package/dist/client/assets/{wardleyDiagram-YWT4CUSO-COpCQvmO.js → wardleyDiagram-YWT4CUSO-KQreLEne.js} +1 -1
  50. package/dist/client/assets/{xychartDiagram-2RQKCTM6-C78ptl5b.js → xychartDiagram-2RQKCTM6-Bxy2QkZl.js} +1 -1
  51. package/dist/client/index.html +2 -2
  52. package/dist/server/config.d.ts +13 -0
  53. package/dist/server/config.js +27 -0
  54. package/dist/server/config.js.map +1 -1
  55. package/dist/server/db/migrations/030_remote_session.sql +29 -0
  56. package/dist/server/db/migrations/031_release_push.sql +39 -0
  57. package/dist/server/entities/ac/system-prompt.js +6 -6
  58. package/dist/server/entities/ac/system-prompt.js.map +1 -1
  59. package/dist/server/index.js +35 -2
  60. package/dist/server/index.js.map +1 -1
  61. package/dist/server/routes/errors.js +10 -0
  62. package/dist/server/routes/errors.js.map +1 -1
  63. package/dist/server/routes/release-pushes.d.ts +10 -0
  64. package/dist/server/routes/release-pushes.js +68 -0
  65. package/dist/server/routes/release-pushes.js.map +1 -0
  66. package/dist/server/routes/releases.js +9 -0
  67. package/dist/server/routes/releases.js.map +1 -1
  68. package/dist/server/routes/remote-account.d.ts +8 -0
  69. package/dist/server/routes/remote-account.js +49 -0
  70. package/dist/server/routes/remote-account.js.map +1 -0
  71. package/dist/server/services/brief.d.ts +2 -0
  72. package/dist/server/services/brief.js +10 -0
  73. package/dist/server/services/brief.js.map +1 -1
  74. package/dist/server/services/plan.js +6 -6
  75. package/dist/server/services/plan.js.map +1 -1
  76. package/dist/server/services/release-bundle.d.ts +92 -0
  77. package/dist/server/services/release-bundle.js +183 -0
  78. package/dist/server/services/release-bundle.js.map +1 -0
  79. package/dist/server/services/release-push.d.ts +38 -0
  80. package/dist/server/services/release-push.js +179 -0
  81. package/dist/server/services/release-push.js.map +1 -0
  82. package/dist/server/services/release.d.ts +39 -1
  83. package/dist/server/services/release.js +53 -1
  84. package/dist/server/services/release.js.map +1 -1
  85. package/dist/server/services/remote-auth.d.ts +56 -0
  86. package/dist/server/services/remote-auth.js +161 -0
  87. package/dist/server/services/remote-auth.js.map +1 -0
  88. package/dist/server/services/remote-http-client.d.ts +136 -0
  89. package/dist/server/services/remote-http-client.js +172 -0
  90. package/dist/server/services/remote-http-client.js.map +1 -0
  91. package/dist/shared/release-push.d.ts +49 -0
  92. package/dist/shared/release-push.js +9 -0
  93. package/dist/shared/release-push.js.map +1 -0
  94. package/dist/shared/remote-account.d.ts +58 -0
  95. package/dist/shared/remote-account.js +8 -0
  96. package/dist/shared/remote-account.js.map +1 -0
  97. package/dist/shared/types.d.ts +1 -0
  98. package/package.json +2 -1
  99. package/dist/client/assets/channel-mXCQ_joU.js +0 -1
  100. package/dist/client/assets/classDiagram-4FO5ZUOK-CvLk0Sg1.js +0 -1
  101. package/dist/client/assets/classDiagram-v2-Q7XG4LA2-CvLk0Sg1.js +0 -1
  102. package/dist/client/assets/index-CUhhC6SY.js +0 -742
  103. 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
- constructor(db, host, versions, pageVersions, pageSerializer, rawReader, tagsService, pagesService, watcher = null) {
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":"AAAA;;;;;;;;GAQG;AAuBH,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGtD,MAAM,YAAY,GAAoB,CAAC,UAAU,EAAE,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;AAC7F,MAAM,aAAa,GAAkC;IACnD,QAAQ,EAAE,UAAU;IACpB,GAAG,EAAE,KAAK;IACV,gBAAgB,EAAE,gBAAgB;IAClC,SAAS,EAAE,SAAS;IACpB,EAAE,EAAE,IAAI;CACT,CAAC;AAsEF,MAAM,OAAO,cAAc;IAEf;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IATV,YACU,EAAqB,EACrB,IAAgB,EAChB,QAAwB,EACxB,YAAgC,EAChC,cAA8B,EAC9B,SAA0B,EAC1B,WAAwB,EACxB,YAA0B,EAC1B,UAA+B,IAAI;QARnC,OAAE,GAAF,EAAE,CAAmB;QACrB,SAAI,GAAJ,IAAI,CAAY;QAChB,aAAQ,GAAR,QAAQ,CAAgB;QACxB,iBAAY,GAAZ,YAAY,CAAoB;QAChC,mBAAc,GAAd,cAAc,CAAgB;QAC9B,cAAS,GAAT,SAAS,CAAiB;QAC1B,gBAAW,GAAX,WAAW,CAAa;QACxB,iBAAY,GAAZ,YAAY,CAAc;QAC1B,YAAO,GAAP,OAAO,CAA4B;IAC1C,CAAC;IAEJ,4EAA4E;IAE5E,YAAY;QACV,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE;aACjB,OAAO,CAAC,8DAA8D,CAAC;aACvE,GAAG,EAAkB,CAAC;QACzB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC;IAED,UAAU,CAAC,QAAyB;QAClC,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAC1C,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,WAAW,CAAC,WAAW,EAAE,YAAY,QAAQ,aAAa,CAAC,CAAC;QAChF,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACpC,OAAO,EAAE,GAAG,OAAO,EAAE,cAAc,EAAE,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;IAC5E,CAAC;IAED,4EAA4E;IAE5E;;;;;OAKG;IACH,aAAa,CACX,KAA4C,EAC5C,KAAgB;QAEhB,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACvC,MAAM,WAAW,GAAG,CAAC,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACrD,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,WAAW,CAAC,YAAY,EAAE,0BAA0B,CAAC,CAAC;QAC3E,IAAI,CAAC,WAAW;YAAE,MAAM,IAAI,WAAW,CAAC,8BAA8B,EAAE,iCAAiC,CAAC,CAAC;QAE3G,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;YAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE;iBACrB,OAAO,CAAC,2CAA2C,CAAC;iBACpD,GAAG,CAAC,IAAI,CAAC,CAAC;YACb,IAAI,QAAQ;gBAAE,MAAM,IAAI,WAAW,CAAC,uBAAuB,EAAE,iBAAiB,IAAI,kBAAkB,CAAC,CAAC;YAEtG,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE;iBACjB,OAAO,CAAC,2EAA2E,CAAC;iBACpF,GAAG,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;YACjC,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YAE/C,IAAI,CAAC,EAAE;iBACJ,OAAO,CAAC,mEAAmE,CAAC;iBAC5E,GAAG,CAAC,SAAS,CAAC,CAAC;YAClB,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;YAE7C,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE;iBAChB,OAAO,CAAC,yCAAyC,CAAC;iBAClD,GAAG,CAAC,SAAS,CAAe,CAAC;YAChC,OAAO,GAAG,CAAC;QACb,CAAC,CAAC,CAAC;QACH,MAAM,UAAU,GAAG,EAAE,EAAE,CAAC;QACxB,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAC3C,OAAO,EAAE,GAAG,OAAO,EAAE,cAAc,EAAE,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;IAChF,CAAC;IAED;;;;;OAKG;IACH,aAAa,CAAC,KAKb;QACC,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;YAClC,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAChD,IAAI,CAAC,GAAG;gBAAE,MAAM,IAAI,WAAW,CAAC,WAAW,EAAE,YAAY,KAAK,CAAC,QAAQ,aAAa,CAAC,CAAC;YAEtF,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE;iBACnB,OAAO,CAAC,2CAA2C,CAAC;iBACpD,GAAG,EAA8B,CAAC;YACrC,IAAI,GAAG,CAAC,EAAE,KAAK,MAAM,CAAC,KAAK,EAAE,CAAC;gBAC5B,MAAM,IAAI,WAAW,CACnB,gBAAgB,EAChB,YAAY,GAAG,CAAC,IAAI,kDAAkD,CACvE,CAAC;YACJ,CAAC;YAED,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YAC1E,MAAM,eAAe,GAAG,KAAK,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;YAE/F,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC3B,IAAI,CAAC,QAAQ;oBAAE,MAAM,IAAI,WAAW,CAAC,YAAY,EAAE,0BAA0B,CAAC,CAAC;gBAC/E,IAAI,QAAQ,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC;oBAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE;yBACrB,OAAO,CAAC,uDAAuD,CAAC;yBAChE,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;oBACzB,IAAI,QAAQ,EAAE,CAAC;wBACb,MAAM,IAAI,WAAW,CAAC,uBAAuB,EAAE,iBAAiB,QAAQ,kBAAkB,CAAC,CAAC;oBAC9F,CAAC;gBACH,CAAC;YACH,CAAC;YACD,IAAI,eAAe,KAAK,SAAS,IAAI,CAAC,eAAe,EAAE,CAAC;gBACtD,MAAM,IAAI,WAAW,CAAC,8BAA8B,EAAE,iCAAiC,CAAC,CAAC;YAC3F,CAAC;YAED,IAAI,QAAQ,KAAK,SAAS,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;gBAC5D,IAAI,CAAC,EAAE;qBACJ,OAAO,CACN;;;0BAGc,CACf;qBACA,GAAG,CAAC,QAAQ,IAAI,IAAI,EAAE,eAAe,IAAI,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YAC5D,CAAC;YAED,IAAI,KAAK,CAAC,gBAAgB,KAAK,IAAI,EAAE,CAAC;gBACpC,IAAI,CAAC,EAAE;qBACJ,OAAO,CAAC,mEAAmE,CAAC;qBAC5E,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACf,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC5C,CAAC;YAED,OAAO,GAAG,CAAC,EAAE,CAAC;QAChB,CAAC,CAAC,CAAC;QACH,MAAM,SAAS,GAAG,EAAE,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IACpC,CAAC;IAED,4EAA4E;IAE5E;;;;OAIG;IACH,kBAAkB,CAAC,QAAyB;QAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAC1C,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,WAAW,CAAC,WAAW,EAAE,YAAY,QAAQ,aAAa,CAAC,CAAC;QAChF,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAEpC,MAAM,QAAQ,GAA4B,EAAE,CAAC;QAC7C,MAAM,kBAAkB,GAA2B,EAAE,CAAC;QACtD,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;YAChC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACzC,IAAI,CAAC,MAAM;gBAAE,SAAS;YACtB,kBAAkB,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC;YACrD,MAAM,IAAI,GAAG,IAAI,CAAC,0BAA0B,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YAC3D,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;gBACrB,IAAI,CAAC,CAAC,CAAC,EAAE;oBAAE,SAAS;gBACpB,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;gBACzD,IAAI,CAAC,IAAI;oBAAE,SAAS;gBACpB,QAAQ,CAAC,IAAI,CAAC;oBACZ,IAAI;oBACJ,IAAI;oBACJ,EAAE,EAAE,CAAC,CAAC,EAAoC;oBAC1C,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC;iBAC5B,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACD,kBAAkB,CAAC,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;QAEtD,MAAM,KAAK,GAA0B,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACrF,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,EAAE,EAAE,CAAC,CAAC,EAAoC;YAC1C,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC;SAC5B,CAAC,CAAC,CAAC;QAEJ,OAAO;YACL,OAAO;YACP,mBAAmB,EAAE,kBAAkB;YACvC,QAAQ;YACR,KAAK;SACN,CAAC;IACJ,CAAC;IAED;;;;;;;;;OASG;IACH,cAAc,CAAC,YAAoC,EAAE,UAA2B;QAC9E,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QAC9C,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,WAAW,CAAC,WAAW,EAAE,YAAY,UAAU,aAAa,CAAC,CAAC;QAEpF,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAEjD,IAAI,QAAsB,CAAC;QAC3B,IAAI,QAA6C,CAAC;QAClD,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;YAC1B,QAAQ,GAAG;gBACT,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE;gBAC1F,mBAAmB,EAAE,MAAM,CAAC,mBAAmB;gBAC/C,QAAQ,EAAE,EAAE;gBACZ,KAAK,EAAE,EAAE;aACV,CAAC;YACF,QAAQ,GAAG,IAAI,CAAC;QAClB,CAAC;aAAM,CAAC;YACN,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;YAClD,IAAI,CAAC,OAAO;gBAAE,MAAM,IAAI,WAAW,CAAC,WAAW,EAAE,YAAY,YAAY,aAAa,CAAC,CAAC;YACxF,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAC/C,QAAQ,GAAG,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;QACpD,CAAC;QAED,MAAM,aAAa,GAA2B,EAAE,CAAC;QACjD,4CAA4C;QAC5C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAiC,CAAC;QACtD,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,QAAQ;YAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;QACtE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAiC,CAAC;QACtD,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,QAAQ;YAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;QACpE,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAE1D,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;YAC1B,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACxB,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACxB,MAAM,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAE,CAAC;YACzB,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;YACrD,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;YACrD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;YACpE,IAAI,IAAI,CAAC,EAAE,KAAK,MAAM;gBAAE,SAAS;YACjC,MAAM,IAAI,GAAG,QAAQ,CAAC,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;YAC/D,MAAM,IAAI,GAAG,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;YAC7D,aAAa,CAAC,IAAI,CAAC;gBACjB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAClD,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtC,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,0BAA0B,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACtG,CAAC,CAAC;QACL,CAAC;QAED,MAAM,WAAW,GAAyB,EAAE,CAAC;QAC7C,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAClE,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAChE,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,IAAI,EAAE,EAAE,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACrE,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;YAC5B,MAAM,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC9B,MAAM,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC9B,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAE,CAAC,CAAC,IAA0D,CAAC,CAAC,CAAC,IAAI,CAAC;YAC5G,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAE,CAAC,CAAC,IAA0D,CAAC,CAAC,CAAC,IAAI,CAAC;YAC5G,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;YAC1D,IAAI,IAAI,CAAC,EAAE,KAAK,MAAM;gBAAE,SAAS;YACjC,WAAW,CAAC,IAAI,CAAC;gBACf,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,cAAc,EAAE,IAAI,CAAC,cAAc;gBACnC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;gBACvC,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;gBACzC,cAAc,EAAE,IAAI,CAAC,cAAc;gBACnC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;gBACvC,aAAa,EAAE,IAAI,CAAC,aAAa;aAClC,CAAC,CAAC;QACL,CAAC;QAED,OAAO;YACL,IAAI,EAAE,QAAQ;YACd,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE;YACtC,QAAQ,EAAE,aAAa;YACvB,KAAK,EAAE,WAAW;SACnB,CAAC;IACJ,CAAC;IAED,4EAA4E;IAE5E;;;;;OAKG;IACH,aAAa,CAAC,KAAyB,EAAE,QAAmB,MAAM;QAChE,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACxD,IAAI,CAAC,UAAU;YAAE,MAAM,IAAI,WAAW,CAAC,WAAW,EAAE,YAAY,KAAK,CAAC,SAAS,aAAa,CAAC,CAAC;QAE9F,MAAM,SAAS,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC;QACrF,MAAM,MAAM,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QACjE,MAAM,UAAU,GAAmB;YACjC,MAAM,EAAE,IAAI,CAAC,SAAS;YACtB,MAAM;YACN,SAAS,EAAE,UAAU,CAAC,EAAE;YACxB,KAAK;SACN,CAAC;QAEF,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,EAAE,KAAK,QAAQ,IAAI,SAAS,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACzE,sEAAsE;YACtE,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAC7D,OAAO;gBACL,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM;aACzC,CAAC;QACJ,CAAC;QAED,MAAM,cAAc,GAAG,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACrD,kDAAkD;QAClD,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACjE,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE;gBAC9D,MAAM,EAAE,IAAI,CAAC,SAAS;gBACtB,KAAK,EAAE,CAAC;gBACR,QAAQ,EAAE,CAAC;aACZ,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,eAAe,EAAE,cAAc,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YACrF,IAAI,IAAI,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;gBACvB,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC;YAC5D,CAAC;QACH,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,cAAc,EAAE,UAAU,CAAC,CAAC;QACzE,OAAO;YACL,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,EAAE,EAAE,MAAM,CAAC,EAAE;YACb,GAAG,CAAC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACpF,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,WAAW,CAAC,KAAuB,EAAE,SAAoB,MAAM;QACnE,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACxD,IAAI,CAAC,UAAU;YAAE,MAAM,IAAI,WAAW,CAAC,WAAW,EAAE,YAAY,KAAK,CAAC,SAAS,aAAa,CAAC,CAAC;QAC9F,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC;QAC7E,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,EAAE,KAAK,QAAQ,EAAE,CAAC;YACtC,oEAAoE;YACpE,IAAI,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC/C,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACnC,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC3C,MAAM,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;gBACpE,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC;YAC7C,CAAC;YACD,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC;QAC1C,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACzB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1D,IAAI,cAAc,GAAkB,IAAI,CAAC;QACzC,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC;gBACH,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;gBAC5C,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;gBACvC,cAAc,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;YAC7F,CAAC;YAAC,MAAM,CAAC;gBACP,cAAc,GAAG,IAAI,CAAC;YACxB,CAAC;QACH,CAAC;QACD,IAAI,cAAc,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC;YACpC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC;QAC1C,CAAC;QAED,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACnC,oGAAoG;QACpG,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;QAC7C,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;QAC1C,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC7D,MAAM,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3D,MAAM,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAChD,MAAM,EAAE,GAA0B,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;QACjE,MAAM,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAClG,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC;IAClC,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,WAAW,CAAC,KAAuB,EAAE,QAAmB,MAAM;QAClE,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACxD,IAAI,CAAC,UAAU;YAAE,MAAM,IAAI,WAAW,CAAC,WAAW,EAAE,YAAY,KAAK,CAAC,SAAS,aAAa,CAAC,CAAC;QAC9F,MAAM,SAAS,GAAG,UAAU,CAAC,EAAE,CAAC;QAEhC,MAAM,aAAa,GAA0B,EAAE,CAAC;QAChD,MAAM,WAAW,GAAwB,EAAE,CAAC;QAE5C,uFAAuF;QACvF,MAAM,KAAK,GAAoB,CAAC,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;QAEhF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,0BAA0B;YAC1B,MAAM,UAAU,GAAG,IAAI,CAAC,0BAA0B,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;YACpE,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;YACtC,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;gBAC3B,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM;oBAAE,SAAS;gBAC9D,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;gBACzD,IAAI,IAAI;oBAAE,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAClC,CAAC;YACD,sCAAsC;YACtC,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;gBAC/B,IAAI,CAAC;oBACH,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;gBAC3E,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,aAAa,CAAC,IAAI,CAAC;wBACjB,IAAI;wBACJ,IAAI;wBACJ,EAAE,EAAE,MAAM;wBACV,QAAQ,EAAE,CAAC,mBAAoB,GAAa,CAAC,OAAO,EAAE,CAAC;qBACxD,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YACD,8DAA8D;YAC9D,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;YAC7D,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;gBAChC,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;oBAAE,SAAS;gBACpC,6EAA6E;gBAC7E,2EAA2E;gBAC3E,2BAA2B;gBAC3B,IAAI,CAAC;oBACH,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;gBAC3E,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,aAAa,CAAC,IAAI,CAAC;wBACjB,IAAI;wBACJ,IAAI;wBACJ,EAAE,EAAE,MAAM;wBACV,QAAQ,EAAE,CAAC,0BAA2B,GAAa,CAAC,OAAO,EAAE,CAAC;qBAC/D,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;QAED,QAAQ;QACR,MAAM,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;QACzE,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,iBAAiB,EAAE,CAAC,CAAC;QAC7E,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,eAAe,EAAE,GAAG,eAAe,CAAC,CAAC,CAAC;QACzE,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE,CAAC;YAClC,IAAI,CAAC;gBACH,WAAW,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;YACvE,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,WAAW,CAAC,IAAI,CAAC;oBACf,IAAI;oBACJ,EAAE,EAAE,MAAM;oBACV,QAAQ,EAAE,CAAC,mBAAoB,GAAa,CAAC,OAAO,EAAE,CAAC;iBACxD,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,CAAC;IACnD,CAAC;IAED,4EAA4E;IAEpE,cAAc,CAAC,QAAyB;QAC9C,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACjC,OAAO,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,yCAAyC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAA2B,IAAI,IAAI,CAAC;QACpH,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC/B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnD,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,yCAAyC,CAAC,CAAC,GAAG,CAAC,KAAK,CAA2B,CAAC;YAC7G,IAAI,IAAI;gBAAE,OAAO,IAAI,CAAC;QACxB,CAAC;QACD,OAAO,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,2CAA2C,CAAC,CAAC,GAAG,CAAC,QAAQ,CAA2B,IAAI,IAAI,CAAC;IACtH,CAAC;IAEO,SAAS,CAAC,GAAe;QAC/B,OAAO;YACL,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,WAAW,EAAE,GAAG,CAAC,WAAW;YAC5B,SAAS,EAAE,GAAG,CAAC,UAAuB;YACtC,SAAS,EAAE,GAAG,CAAC,UAAU;SAC1B,CAAC;IACJ,CAAC;IAEO,qBAAqB,CAAC,SAAiB;QAC7C,MAAM,YAAY,GAA2B,EAAE,CAAC;QAChD,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE;aACjB,OAAO,CACN,iGAAiG,CAClG;aACA,GAAG,CAAC,SAAS,CAA8C,CAAC;QAC/D,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;YACrB,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAClC,WAAW,IAAI,CAAC,CAAC,CAAC,CAAC;QACrB,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE;aACpB,OAAO,CAAC,+EAA+E,CAAC;aACxF,GAAG,CAAC,SAAS,CAAkB,CAAC;QACnC,OAAO;YACL,QAAQ,EAAE,YAAY;YACtB,KAAK,EAAE,OAAO,CAAC,CAAC;YAChB,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC;SAC/B,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACK,sBAAsB,CAC5B,IAAmB,EACnB,IAAY,EACZ,SAAiB;QAEjB,8DAA8D;QAC9D,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACxD,IAAI,SAAS,IAAI,IAAI,EAAE,CAAC;YACtB,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE;iBAChB,OAAO,CACN;;;0CAGgC,CACjC;iBACA,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,CAAiC,CAAC;YACnE,IAAI,GAAG;gBAAE,OAAO,GAAG,CAAC;QACtB,CAAC;QACD,uEAAuE;QACvE,oEAAoE;QACpE,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE;aACjB,OAAO,CACN;;;2CAGmC,CACpC;aACA,GAAG,CAAC,IAAI,EAAE,SAAS,CAAuB,CAAC;QAC9C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAC/B,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;YACrB,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;gBAAE,SAAS;YACpC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YACtB,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;YAC5D,IAAI,OAAO,KAAK,IAAI;gBAAE,OAAO,CAAC,CAAC;QACjC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;OAKG;IACK,0BAA0B,CAAC,IAAmB,EAAE,SAAiB;QACvE,OAAO,IAAI,CAAC,EAAE;aACX,OAAO,CACN;;;;;;;;;iCASyB,CAC1B;aACA,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,CAAuB,CAAC;IAC3D,CAAC;IAEO,wBAAwB,CAAC,SAAiB;QAChD,OAAO,IAAI,CAAC,EAAE;aACX,OAAO,CACN;;;;;;;;;4BASoB,CACrB;aACA,GAAG,CAAC,SAAS,EAAE,SAAS,CAAqB,CAAC;IACnD,CAAC;IAED;;;;;OAKG;IACK,WAAW,CAAC,IAAmB,EAAE,QAAgB,EAAE,QAAgB;QACzE,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YACpC,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAQ,MAA6B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACpG,OAAQ,MAA2B,CAAC,IAAI,CAAC;YAC3C,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,kBAAkB;QACpB,CAAC;QACD,6DAA6D;QAC7D,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,oBAAoB,KAAK,eAAe,CAAC,CAAC,GAAG,CAAC,QAAQ,CAErE,CAAC;QACd,OAAO,GAAG,EAAE,IAAI,IAAI,IAAI,CAAC;IAC3B,CAAC;CACF;AAED,SAAS,aAAa,CAAC,GAAW;IAChC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,GAAG,CAAC;IACb,CAAC;AACH,CAAC"}
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>;