@superblocksteam/library-shared 1.99.99-next.2 → 2.0.0-SNAPSHOT.53db949903de312b

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 (175) hide show
  1. package/dist/computed.d.ts +4 -2
  2. package/dist/computed.d.ts.map +1 -1
  3. package/dist/computed.js +1 -1
  4. package/dist/computed.js.map +1 -1
  5. package/dist/default-structure.d.ts +12 -0
  6. package/dist/default-structure.d.ts.map +1 -0
  7. package/dist/default-structure.js +36 -0
  8. package/dist/default-structure.js.map +1 -0
  9. package/dist/event-trigger-constants.d.ts +2 -0
  10. package/dist/event-trigger-constants.d.ts.map +1 -0
  11. package/dist/event-trigger-constants.js +2 -0
  12. package/dist/event-trigger-constants.js.map +1 -0
  13. package/dist/index.d.ts +18 -8
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +17 -8
  16. package/dist/index.js.map +1 -1
  17. package/dist/layout.d.ts +12 -1
  18. package/dist/layout.d.ts.map +1 -1
  19. package/dist/layout.js +11 -4
  20. package/dist/layout.js.map +1 -1
  21. package/dist/mobx-sync/apply-patch.d.ts.map +1 -1
  22. package/dist/mobx-sync/apply-patch.js +23 -4
  23. package/dist/mobx-sync/apply-patch.js.map +1 -1
  24. package/dist/mobx-sync/to-patch.d.ts.map +1 -1
  25. package/dist/mobx-sync/to-patch.js.map +1 -1
  26. package/dist/pages.d.ts +76 -6
  27. package/dist/pages.d.ts.map +1 -1
  28. package/dist/pages.js +54 -2
  29. package/dist/pages.js.map +1 -1
  30. package/dist/pegs/find-string-interpolation.d.ts +12 -0
  31. package/dist/pegs/find-string-interpolation.d.ts.map +1 -0
  32. package/dist/pegs/find-string-interpolation.js +1265 -0
  33. package/dist/pegs/find-string-interpolation.js.map +1 -0
  34. package/dist/props/helpers.d.ts +1 -1
  35. package/dist/props/helpers.d.ts.map +1 -1
  36. package/dist/props/helpers.js +13 -5
  37. package/dist/props/helpers.js.map +1 -1
  38. package/dist/props/prop-types.d.ts +24 -13
  39. package/dist/props/prop-types.d.ts.map +1 -1
  40. package/dist/props/prop-types.js.map +1 -1
  41. package/dist/props/properties-panel.d.ts +61 -26
  42. package/dist/props/properties-panel.d.ts.map +1 -1
  43. package/dist/props/properties-panel.js +2 -5
  44. package/dist/props/properties-panel.js.map +1 -1
  45. package/dist/props/tailwind-property-keys.d.ts +5 -0
  46. package/dist/props/tailwind-property-keys.d.ts.map +1 -0
  47. package/dist/props/tailwind-property-keys.js +234 -0
  48. package/dist/props/tailwind-property-keys.js.map +1 -0
  49. package/dist/restart-contract.d.ts +35 -0
  50. package/dist/restart-contract.d.ts.map +1 -0
  51. package/dist/restart-contract.js +49 -0
  52. package/dist/restart-contract.js.map +1 -0
  53. package/dist/scope.d.ts +2 -0
  54. package/dist/scope.d.ts.map +1 -1
  55. package/dist/scope.js +3 -0
  56. package/dist/scope.js.map +1 -1
  57. package/dist/types/ai.d.ts +1712 -0
  58. package/dist/types/ai.d.ts.map +1 -0
  59. package/dist/types/ai.js +414 -0
  60. package/dist/types/ai.js.map +1 -0
  61. package/dist/types/apis.d.ts +44 -1
  62. package/dist/types/apis.d.ts.map +1 -1
  63. package/dist/types/base-entity-manager.d.ts +15 -0
  64. package/dist/types/base-entity-manager.d.ts.map +1 -0
  65. package/dist/types/base-entity-manager.js +2 -0
  66. package/dist/types/base-entity-manager.js.map +1 -0
  67. package/dist/types/binding-identifiers.d.ts +13 -0
  68. package/dist/types/binding-identifiers.d.ts.map +1 -0
  69. package/dist/types/binding-identifiers.js +6 -0
  70. package/dist/types/binding-identifiers.js.map +1 -0
  71. package/dist/types/common.d.ts +2 -1
  72. package/dist/types/common.d.ts.map +1 -1
  73. package/dist/types/edit-operations.d.ts +26 -23
  74. package/dist/types/edit-operations.d.ts.map +1 -1
  75. package/dist/types/edit-operations.js +2 -0
  76. package/dist/types/edit-operations.js.map +1 -1
  77. package/dist/types/entities.d.ts +10 -29
  78. package/dist/types/entities.d.ts.map +1 -1
  79. package/dist/types/entities.js +0 -5
  80. package/dist/types/entities.js.map +1 -1
  81. package/dist/types/errors.d.ts +73 -1
  82. package/dist/types/errors.d.ts.map +1 -1
  83. package/dist/types/errors.js +9 -1
  84. package/dist/types/errors.js.map +1 -1
  85. package/dist/types/events.d.ts +219 -26
  86. package/dist/types/events.d.ts.map +1 -1
  87. package/dist/types/events.js +33 -5
  88. package/dist/types/events.js.map +1 -1
  89. package/dist/types/index.d.ts +18 -6
  90. package/dist/types/index.d.ts.map +1 -1
  91. package/dist/types/index.js +18 -6
  92. package/dist/types/index.js.map +1 -1
  93. package/dist/types/migration.d.ts +240 -0
  94. package/dist/types/migration.d.ts.map +1 -0
  95. package/dist/types/migration.js +50 -0
  96. package/dist/types/migration.js.map +1 -0
  97. package/dist/types/mobx-shared-state.d.ts +27 -1
  98. package/dist/types/mobx-shared-state.d.ts.map +1 -1
  99. package/dist/types/parent-messages.d.ts +16 -7
  100. package/dist/types/parent-messages.d.ts.map +1 -1
  101. package/dist/types/protected-packages.d.ts +54 -0
  102. package/dist/types/protected-packages.d.ts.map +1 -0
  103. package/dist/types/protected-packages.js +91 -0
  104. package/dist/types/protected-packages.js.map +1 -0
  105. package/dist/types/register-component.d.ts +128 -0
  106. package/dist/types/register-component.d.ts.map +1 -0
  107. package/dist/types/register-component.js +45 -0
  108. package/dist/types/register-component.js.map +1 -0
  109. package/dist/types/routing.d.ts +68 -0
  110. package/dist/types/routing.d.ts.map +1 -0
  111. package/dist/types/routing.js +2 -0
  112. package/dist/types/routing.js.map +1 -0
  113. package/dist/types/runtime-sync.d.ts +32 -0
  114. package/dist/types/runtime-sync.d.ts.map +1 -0
  115. package/dist/types/runtime-sync.js +2 -0
  116. package/dist/types/runtime-sync.js.map +1 -0
  117. package/dist/types/scope.d.ts +8 -6
  118. package/dist/types/scope.d.ts.map +1 -1
  119. package/dist/types/snapshot.d.ts +53 -0
  120. package/dist/types/snapshot.d.ts.map +1 -0
  121. package/dist/types/snapshot.js +2 -0
  122. package/dist/types/snapshot.js.map +1 -0
  123. package/dist/types/socket.d.ts +662 -48
  124. package/dist/types/socket.d.ts.map +1 -1
  125. package/dist/types/theme.d.ts +8 -7
  126. package/dist/types/theme.d.ts.map +1 -1
  127. package/dist/types/theme.js +5 -6
  128. package/dist/types/theme.js.map +1 -1
  129. package/dist/types/tool-permission-response.d.ts +5 -0
  130. package/dist/types/tool-permission-response.d.ts.map +1 -0
  131. package/dist/types/tool-permission-response.js +26 -0
  132. package/dist/types/tool-permission-response.js.map +1 -0
  133. package/dist/types/vite.d.ts +29 -0
  134. package/dist/types/vite.d.ts.map +1 -0
  135. package/dist/types/vite.js +6 -0
  136. package/dist/types/vite.js.map +1 -0
  137. package/dist/urls.d.ts +6 -0
  138. package/dist/urls.d.ts.map +1 -0
  139. package/dist/urls.js +5 -0
  140. package/dist/urls.js.map +1 -0
  141. package/dist/utils/binding-identifier.d.ts +5 -0
  142. package/dist/utils/binding-identifier.d.ts.map +1 -0
  143. package/dist/utils/binding-identifier.js +14 -0
  144. package/dist/utils/binding-identifier.js.map +1 -0
  145. package/dist/utils/blocks.d.ts +3 -0
  146. package/dist/utils/blocks.d.ts.map +1 -0
  147. package/dist/utils/blocks.js +70 -0
  148. package/dist/utils/blocks.js.map +1 -0
  149. package/dist/utils/computed-args.d.ts +11 -0
  150. package/dist/utils/computed-args.d.ts.map +1 -0
  151. package/dist/utils/computed-args.js +13 -0
  152. package/dist/utils/computed-args.js.map +1 -0
  153. package/dist/utils/dev-server-authorization.d.ts +4 -0
  154. package/dist/utils/dev-server-authorization.d.ts.map +1 -0
  155. package/dist/utils/dev-server-authorization.js +56 -0
  156. package/dist/utils/dev-server-authorization.js.map +1 -0
  157. package/dist/utils/dotted-paths.js +1 -1
  158. package/dist/utils/dotted-paths.js.map +1 -1
  159. package/dist/utils/properties.d.ts +12 -9
  160. package/dist/utils/properties.d.ts.map +1 -1
  161. package/dist/utils/properties.js +14 -6
  162. package/dist/utils/properties.js.map +1 -1
  163. package/dist/utils/routing.d.ts +5 -0
  164. package/dist/utils/routing.d.ts.map +1 -0
  165. package/dist/utils/routing.js +15 -0
  166. package/dist/utils/routing.js.map +1 -0
  167. package/dist/utils/strings.d.ts +12 -0
  168. package/dist/utils/strings.d.ts.map +1 -1
  169. package/dist/utils/strings.js +40 -1
  170. package/dist/utils/strings.js.map +1 -1
  171. package/package.json +41 -25
  172. package/dist/apis.d.ts +0 -2
  173. package/dist/apis.d.ts.map +0 -1
  174. package/dist/apis.js +0 -4
  175. package/dist/apis.js.map +0 -1
@@ -0,0 +1,240 @@
1
+ /**
2
+ * Wire types for the v2→v3 migration flow. Shared between the vite dev
3
+ * server (`vite-plugin-file-sync/src/migration/*`) and the editor UI
4
+ * (`ui/src/app/pages/components/migrateToV3/*`). Anything that crosses
5
+ * the `/sb-migration-status` boundary belongs here so a new phase or
6
+ * checklist field added on one side is a compile error on the other.
7
+ *
8
+ * ## State ownership (see `vite-plugin-file-sync/src/migration/README.md`)
9
+ *
10
+ * - **Server session** (`MigrationSessionResponse`): phase, generation, abort,
11
+ * backup/migration/completion commit IDs. Authoritative after CP4.
12
+ * - **Dev-server scratch** (`MigrationStatusResponse`): checklist,
13
+ * `integrationWritePolicy`, verification progress. Authoritative for in-pod work.
14
+ *
15
+ * `integrationWritePolicy` appears on both shapes for API symmetry, but only scratch
16
+ * is populated and enforced today. The Postgres column and `POST /migration/start`
17
+ * body field are schema placeholders — not part of CP1–CP4 delivery.
18
+ */
19
+ /**
20
+ * Checklist-derived phases exposed on `GET /sb-migration-status` after CP4.
21
+ * `backup`, `restructure`, and `flip` remain for in-process POST handlers
22
+ * only — they are not returned on GET.
23
+ */
24
+ export type MigrationPhase = "idle"
25
+ /** @deprecated Not returned on GET /sb-migration-status (CP4). */
26
+ | "backup"
27
+ /** @deprecated Not returned on GET /sb-migration-status (CP4). */
28
+ | "restructure"
29
+ /** @deprecated Not returned on GET /sb-migration-status (CP4). */
30
+ | "flip" | "translating" | "done" | "done_with_unresolved" | "failed";
31
+ export type MigrationChecklistStatus = "pending" | "in_progress" | "completed" | "cancelled" | "failed";
32
+ export type MigrationChecklistOverallStatus = "active" | "completed";
33
+ export type MigrationChecklistOrigin = "2.0-upgrade" | "clark" | "seed_api" | "seed_phase";
34
+ export interface MigrationChecklistItem {
35
+ id: string;
36
+ content: string;
37
+ status: MigrationChecklistStatus;
38
+ createdAt: string;
39
+ updatedAt?: string;
40
+ origin: MigrationChecklistOrigin;
41
+ /**
42
+ * Whether this checklist item should be removed automatically once a
43
+ * successful build finalize completes.
44
+ */
45
+ clearOnFinalize?: boolean;
46
+ apiName?: string;
47
+ stubPath?: string;
48
+ /** Populated when `status === "failed"`. */
49
+ failureReason?: string;
50
+ /**
51
+ * Number of prior translation attempts recorded on this item.
52
+ * Bumped each time the user invokes "Fix with Clark" on a failed
53
+ * row — the row flips back to `pending` and this counter
54
+ * increments. The initial agent run counts as attempt 0; the first
55
+ * manual retry produces `attemptCount = 1`, and so on. There is no
56
+ * automatic retry, so the counter is only non-zero once a user has
57
+ * explicitly asked for another attempt.
58
+ */
59
+ attemptCount?: number;
60
+ /**
61
+ * Most recent `failureReason` observed for this item, preserved
62
+ * across status transitions so a retry prompt can carry context
63
+ * even after the row is flipped back to `pending`.
64
+ */
65
+ lastFailureReason?: string;
66
+ /**
67
+ * When set, verification was skipped for this item.
68
+ * `"mutation"` means the API contains write operations so running it
69
+ * automatically is unsafe. `"v2_unrunnable"` means the v2 baseline
70
+ * could not be executed (e.g. missing credentials, unsupported block
71
+ * type). `"both_failed"` means both v2 and v3 errored — typically because
72
+ * the API requires inputs from the frontend that aren't supplied during
73
+ * background verification — so we couldn't establish parity automatically.
74
+ * `"testing_denied"` means the user denied automatic testing; the API needs
75
+ * manual verification before production use.
76
+ */
77
+ verificationSkippedReason?: "both_failed" | "mutation" | "testing_denied" | "v2_unrunnable";
78
+ /**
79
+ * The outcome of the most recent verification run for this item.
80
+ * `"auto_passed"` means Clark confirmed v2 and v3 outputs match.
81
+ * `"user_manually_verified"` means the user confirmed equivalence
82
+ * by hand. `"diverged_user_accepted"` means the user accepted a
83
+ * known diff.
84
+ */
85
+ verificationOutcome?: "auto_passed" | "user_manually_verified" | "diverged_user_accepted";
86
+ /** Filesystem path to the last comparison diff written by the verifier. */
87
+ lastVerificationDiffPath?: string;
88
+ /** ISO-8601 timestamp of the last verification attempt. */
89
+ lastVerificationAt?: string;
90
+ /**
91
+ * Identifier of the coding sub-agent that owns this item, set by
92
+ * `spawnCodingSubagents` before fan-out when Clark passes `apiNames` per
93
+ * worker. Used purely for UI grouping (batch rows in `ChecklistDisplay`);
94
+ * unset on items migrated sequentially in the main agent's turn.
95
+ */
96
+ workerId?: string;
97
+ /**
98
+ * Forward-scaffolding shape for structured detail captured from the
99
+ * most recent verification run (planned writer:
100
+ * `scratch/migration-verification/<api>.history.json`). The writer
101
+ * and consumers (chat checklist deep-dive, agent-facing summary)
102
+ * land in a follow-up PR; the field is included here so the
103
+ * cross-package wire shape doesn't churn when that PR ships. No
104
+ * code currently sets or reads `details` — treat it as reserved.
105
+ */
106
+ details?: {
107
+ /** Last error returned when running the v2 baseline of this API. */
108
+ v2Error?: string;
109
+ /** Last error returned when running the migrated v3 of this API. */
110
+ v3Error?: string;
111
+ /**
112
+ * Names of inputs the verifier could not synthesize a value for
113
+ * (e.g. UI-bound parameters that have no recorded test value).
114
+ */
115
+ missingInputs?: string[];
116
+ /** Display name of the integration the API binds to. */
117
+ integrationName?: string;
118
+ /**
119
+ * Concise, agent-readable summary of why verification failed and
120
+ * what (if anything) Clark could try next.
121
+ */
122
+ summaryForAgent?: string;
123
+ };
124
+ }
125
+ export type IntegrationWritePolicy = "allow" | "deny";
126
+ export interface MigrationIntegrationEntry {
127
+ id: string;
128
+ displayName: string;
129
+ defaultPolicy: "allow" | "deny";
130
+ /** Classification of the integration's write behaviour derived from v2 YAML analysis. */
131
+ mutationKind: "read" | "write" | "unknown";
132
+ }
133
+ /** Server-owned migration session phases (DB `application_migration_session.phase`). */
134
+ export declare const MIGRATION_SESSION_PHASES: readonly ["aborting", "aborted", "failed", "in_progress", "preparing_postflip", "preparing_preflip"];
135
+ export type MigrationSessionPhase = (typeof MIGRATION_SESSION_PHASES)[number];
136
+ /** Phases that block a new `POST /migration/start`. */
137
+ export declare const ACTIVE_MIGRATION_SESSION_PHASES: readonly ["aborting", "in_progress", "preparing_postflip", "preparing_preflip"];
138
+ export type ActiveMigrationSessionPhase = (typeof ACTIVE_MIGRATION_SESSION_PHASES)[number];
139
+ export declare const MIGRATION_FAILURE_STAGES: readonly ["abort", "in_progress", "postflip", "preflip"];
140
+ export type MigrationFailureStage = (typeof MIGRATION_FAILURE_STAGES)[number];
141
+ export declare const DEFAULT_MIGRATION_TARGET_TEMPLATE_NAME = "app-fullstack";
142
+ /** Max wall-clock time for server abort saga + UI stale detection (5 minutes). */
143
+ export declare const MIGRATION_ABORT_MAX_DURATION_MS: number;
144
+ /** Server abort saga resume cursor (`application_migration_session.abort_checkpoint`). */
145
+ export declare const MIGRATION_ABORT_CHECKPOINTS: readonly ["requested", "restored", "terminated"];
146
+ export type MigrationAbortCheckpoint = (typeof MIGRATION_ABORT_CHECKPOINTS)[number];
147
+ export interface MigrationSessionResponse {
148
+ applicationId: string;
149
+ branchName: string;
150
+ generation: number;
151
+ phase: MigrationSessionPhase;
152
+ failureStage?: MigrationFailureStage;
153
+ errorMessage?: string;
154
+ sourceTemplateName?: string;
155
+ targetTemplateName: string;
156
+ backupCommitId?: string;
157
+ migrationCommitId?: string;
158
+ completionCommitId?: string;
159
+ /** Schema placeholder — not written or read for enforcement today. See module header. */
160
+ integrationWritePolicy?: Record<string, IntegrationWritePolicy>;
161
+ /** True when UI should reload (post-flip pod recycle window). */
162
+ reloadRecommended: boolean;
163
+ startedAt: string;
164
+ updatedAt: string;
165
+ /** ISO-8601 timestamp when `POST /migration/abort` entered `aborting`. */
166
+ abortStartedAt?: string;
167
+ abortCheckpoint?: MigrationAbortCheckpoint;
168
+ abortedAt?: string;
169
+ completedAt?: string;
170
+ failedAt?: string;
171
+ }
172
+ export interface MigrationSessionPayload {
173
+ session: MigrationSessionResponse | null;
174
+ }
175
+ export interface MigrationStartRequestBody {
176
+ /** Accepted but not persisted — policy is saved via `/sb-migration-set-write-policy`. */
177
+ integrationWritePolicy?: Record<string, IntegrationWritePolicy>;
178
+ targetTemplateName?: string;
179
+ }
180
+ export interface MigrationStartResponse {
181
+ accepted: true;
182
+ generation: number;
183
+ }
184
+ export interface MigrationAbortResponse {
185
+ accepted: true;
186
+ /** True when another abort saga is already running within the max duration window. */
187
+ inProgress?: boolean;
188
+ session: MigrationSessionResponse | null;
189
+ }
190
+ /** Optional body for POST .../migration/abort when the server session row was cleared. */
191
+ export interface MigrationAbortRequestBody {
192
+ backupCommitId?: string;
193
+ /** When true on an expired aborting session, reset the abort clock for a user-initiated retry. */
194
+ freshRetry?: boolean;
195
+ }
196
+ /**
197
+ * Aggregate view of normal (non-focused-debug) Clark migration turns,
198
+ * derived from the dev server's `scratch/migration-turns.jsonl` log.
199
+ * The UI uses this to decide when the initial migration generation has
200
+ * genuinely finished (e.g. to dismiss the "Upgrading your app" overlay)
201
+ * without client-side heuristics. `settledOutcome` reflects the most
202
+ * recent normal settle.
203
+ */
204
+ export interface MigrationInitialTurnSummary {
205
+ dispatched: boolean;
206
+ settled: boolean;
207
+ settledOutcome?: "error" | "success";
208
+ }
209
+ export interface MigrationStatusResponse {
210
+ state: MigrationPhase;
211
+ error?: string;
212
+ /** Normal migration turn dispatch/settle summary from the dev server turn log. */
213
+ initialTurn?: MigrationInitialTurnSummary;
214
+ backupCommitId?: string;
215
+ migrationCommitId?: string;
216
+ startedAt?: string;
217
+ hasV2Backup: boolean;
218
+ checklist?: {
219
+ overallStatus: MigrationChecklistOverallStatus;
220
+ items: MigrationChecklistItem[];
221
+ lastUpdated: string;
222
+ };
223
+ /** Integration IDs discovered from v2-backup YAML files, populated once hasV2Backup is true. */
224
+ integrations?: MigrationIntegrationEntry[];
225
+ /** Per-integration write policy — source of truth in scratch; enforced by dev server. */
226
+ integrationWritePolicy?: Record<string, IntegrationWritePolicy>;
227
+ /**
228
+ * Set on the idle preflight when the live app references plugin IDs
229
+ * that are not in the fullstack `SUPPORTED_PLUGIN_IDS` allowlist.
230
+ * Migration is still allowed to proceed — the modal surfaces the
231
+ * lists below so the user can decide whether to attempt a Clark
232
+ * translation despite the gap.
233
+ */
234
+ hasUnsupportedIntegrations?: boolean;
235
+ /** Plugin IDs (e.g. "redis", "python") that aren't supported by the v3 runtime. */
236
+ unsupportedIntegrationIds?: string[];
237
+ /** v2 API names that reference at least one unsupported integration. */
238
+ unsupportedApiNames?: string[];
239
+ }
240
+ //# sourceMappingURL=migration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migration.d.ts","sourceRoot":"","sources":["../../src/types/migration.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH;;;;GAIG;AACH,MAAM,MAAM,cAAc,GACtB,MAAM;AACR,kEAAkE;GAChE,QAAQ;AACV,kEAAkE;GAChE,aAAa;AACf,kEAAkE;GAChE,MAAM,GACN,aAAa,GACb,MAAM,GACN,sBAAsB,GACtB,QAAQ,CAAC;AAEb,MAAM,MAAM,wBAAwB,GAChC,SAAS,GACT,aAAa,GACb,WAAW,GACX,WAAW,GACX,QAAQ,CAAC;AAEb,MAAM,MAAM,+BAA+B,GAAG,QAAQ,GAAG,WAAW,CAAC;AAErE,MAAM,MAAM,wBAAwB,GAChC,aAAa,GACb,OAAO,GACP,UAAU,GACV,YAAY,CAAC;AAEjB,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,wBAAwB,CAAC;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,wBAAwB,CAAC;IACjC;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4CAA4C;IAC5C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;;;;OAQG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;;;;;;;OAUG;IACH,yBAAyB,CAAC,EACtB,aAAa,GACb,UAAU,GACV,gBAAgB,GAChB,eAAe,CAAC;IACpB;;;;;;OAMG;IACH,mBAAmB,CAAC,EAChB,aAAa,GACb,wBAAwB,GACxB,wBAAwB,CAAC;IAC7B,2EAA2E;IAC3E,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,2DAA2D;IAC3D,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE;QACR,oEAAoE;QACpE,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,oEAAoE;QACpE,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB;;;WAGG;QACH,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;QACzB,wDAAwD;QACxD,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB;;;WAGG;QACH,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B,CAAC;CACH;AAED,MAAM,MAAM,sBAAsB,GAAG,OAAO,GAAG,MAAM,CAAC;AAEtD,MAAM,WAAW,yBAAyB;IACxC,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,OAAO,GAAG,MAAM,CAAC;IAChC,yFAAyF;IACzF,YAAY,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;CAC5C;AAED,wFAAwF;AACxF,eAAO,MAAM,wBAAwB,sGAO3B,CAAC;AAEX,MAAM,MAAM,qBAAqB,GAAG,CAAC,OAAO,wBAAwB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE9E,uDAAuD;AACvD,eAAO,MAAM,+BAA+B,iFAKlC,CAAC;AAEX,MAAM,MAAM,2BAA2B,GACrC,CAAC,OAAO,+BAA+B,CAAC,CAAC,MAAM,CAAC,CAAC;AAEnD,eAAO,MAAM,wBAAwB,0DAK3B,CAAC;AAEX,MAAM,MAAM,qBAAqB,GAAG,CAAC,OAAO,wBAAwB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE9E,eAAO,MAAM,sCAAsC,kBAAkB,CAAC;AAEtE,kFAAkF;AAClF,eAAO,MAAM,+BAA+B,QAAgB,CAAC;AAE7D,0FAA0F;AAC1F,eAAO,MAAM,2BAA2B,kDAI9B,CAAC;AAEX,MAAM,MAAM,wBAAwB,GAClC,CAAC,OAAO,2BAA2B,CAAC,CAAC,MAAM,CAAC,CAAC;AAE/C,MAAM,WAAW,wBAAwB;IACvC,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,qBAAqB,CAAC;IAC7B,YAAY,CAAC,EAAE,qBAAqB,CAAC;IACrC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,yFAAyF;IACzF,sBAAsB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;IAChE,iEAAiE;IACjE,iBAAiB,EAAE,OAAO,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,0EAA0E;IAC1E,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,wBAAwB,CAAC;IAC3C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,wBAAwB,GAAG,IAAI,CAAC;CAC1C;AAED,MAAM,WAAW,yBAAyB;IACxC,yFAAyF;IACzF,sBAAsB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;IAChE,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,IAAI,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,IAAI,CAAC;IACf,sFAAsF;IACtF,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,EAAE,wBAAwB,GAAG,IAAI,CAAC;CAC1C;AAED,0FAA0F;AAC1F,MAAM,WAAW,yBAAyB;IACxC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kGAAkG;IAClG,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,2BAA2B;IAC1C,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACtC;AAED,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,cAAc,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kFAAkF;IAClF,WAAW,CAAC,EAAE,2BAA2B,CAAC;IAC1C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE;QACV,aAAa,EAAE,+BAA+B,CAAC;QAC/C,KAAK,EAAE,sBAAsB,EAAE,CAAC;QAChC,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,gGAAgG;IAChG,YAAY,CAAC,EAAE,yBAAyB,EAAE,CAAC;IAC3C,yFAAyF;IACzF,sBAAsB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;IAChE;;;;;;OAMG;IACH,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,mFAAmF;IACnF,yBAAyB,CAAC,EAAE,MAAM,EAAE,CAAC;IACrC,wEAAwE;IACxE,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;CAChC"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Wire types for the v2→v3 migration flow. Shared between the vite dev
3
+ * server (`vite-plugin-file-sync/src/migration/*`) and the editor UI
4
+ * (`ui/src/app/pages/components/migrateToV3/*`). Anything that crosses
5
+ * the `/sb-migration-status` boundary belongs here so a new phase or
6
+ * checklist field added on one side is a compile error on the other.
7
+ *
8
+ * ## State ownership (see `vite-plugin-file-sync/src/migration/README.md`)
9
+ *
10
+ * - **Server session** (`MigrationSessionResponse`): phase, generation, abort,
11
+ * backup/migration/completion commit IDs. Authoritative after CP4.
12
+ * - **Dev-server scratch** (`MigrationStatusResponse`): checklist,
13
+ * `integrationWritePolicy`, verification progress. Authoritative for in-pod work.
14
+ *
15
+ * `integrationWritePolicy` appears on both shapes for API symmetry, but only scratch
16
+ * is populated and enforced today. The Postgres column and `POST /migration/start`
17
+ * body field are schema placeholders — not part of CP1–CP4 delivery.
18
+ */
19
+ /** Server-owned migration session phases (DB `application_migration_session.phase`). */
20
+ export const MIGRATION_SESSION_PHASES = [
21
+ "aborting",
22
+ "aborted",
23
+ "failed",
24
+ "in_progress",
25
+ "preparing_postflip",
26
+ "preparing_preflip",
27
+ ];
28
+ /** Phases that block a new `POST /migration/start`. */
29
+ export const ACTIVE_MIGRATION_SESSION_PHASES = [
30
+ "aborting",
31
+ "in_progress",
32
+ "preparing_postflip",
33
+ "preparing_preflip",
34
+ ];
35
+ export const MIGRATION_FAILURE_STAGES = [
36
+ "abort",
37
+ "in_progress",
38
+ "postflip",
39
+ "preflip",
40
+ ];
41
+ export const DEFAULT_MIGRATION_TARGET_TEMPLATE_NAME = "app-fullstack";
42
+ /** Max wall-clock time for server abort saga + UI stale detection (5 minutes). */
43
+ export const MIGRATION_ABORT_MAX_DURATION_MS = 5 * 60 * 1000;
44
+ /** Server abort saga resume cursor (`application_migration_session.abort_checkpoint`). */
45
+ export const MIGRATION_ABORT_CHECKPOINTS = [
46
+ "requested",
47
+ "restored",
48
+ "terminated",
49
+ ];
50
+ //# sourceMappingURL=migration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migration.js","sourceRoot":"","sources":["../../src/types/migration.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAgJH,wFAAwF;AACxF,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,UAAU;IACV,SAAS;IACT,QAAQ;IACR,aAAa;IACb,oBAAoB;IACpB,mBAAmB;CACX,CAAC;AAIX,uDAAuD;AACvD,MAAM,CAAC,MAAM,+BAA+B,GAAG;IAC7C,UAAU;IACV,aAAa;IACb,oBAAoB;IACpB,mBAAmB;CACX,CAAC;AAKX,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,OAAO;IACP,aAAa;IACb,UAAU;IACV,SAAS;CACD,CAAC;AAIX,MAAM,CAAC,MAAM,sCAAsC,GAAG,eAAe,CAAC;AAEtE,kFAAkF;AAClF,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AAE7D,0FAA0F;AAC1F,MAAM,CAAC,MAAM,2BAA2B,GAAG;IACzC,WAAW;IACX,UAAU;IACV,YAAY;CACJ,CAAC"}
@@ -1,9 +1,35 @@
1
+ import type { Dim } from "../layout.js";
2
+ import type { EntityDefinition } from "../props/prop-types.js";
3
+ import type { SbElement } from "./common.js";
4
+ import type { CatalogWithInternalDetails, EditorConfig } from "./register-component.js";
1
5
  export type ComponentRegistryShareState = {
2
6
  customComponentList: string[];
3
- libraryComponentList: string[];
7
+ libraryComponentCatalogs: CatalogWithInternalDetails[];
8
+ libraryComponentEditorConfigs: Record<string, EditorConfig>;
9
+ entityDefinitions: Record<string, EntityDefinition>;
10
+ };
11
+ export type DndShareState = {
12
+ isDragging: boolean;
13
+ isDraggingNewComponent: boolean;
14
+ };
15
+ export type ResizingShareState = {
16
+ isResizing: boolean;
17
+ activeResize: null | {
18
+ width: Dim | null;
19
+ height: Dim | null;
20
+ };
21
+ };
22
+ export type ValidationState = {
23
+ isValid: boolean;
24
+ message?: string;
25
+ invalidValue?: any;
4
26
  };
5
27
  export type KeyToState = {
6
28
  "component-registry": ComponentRegistryShareState;
29
+ dnd: DndShareState;
30
+ resizing: ResizingShareState;
7
31
  scope: Record<string, Record<string, unknown>>;
32
+ validationState: Record<string, ValidationState>;
33
+ runtimeSync: Record<SbElement, any>;
8
34
  };
9
35
  //# sourceMappingURL=mobx-shared-state.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mobx-shared-state.d.ts","sourceRoot":"","sources":["../../src/types/mobx-shared-state.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,2BAA2B,GAAG;IACxC,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,oBAAoB,EAAE,MAAM,EAAE,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,oBAAoB,EAAE,2BAA2B,CAAC;IAClD,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CAChD,CAAC"}
1
+ {"version":3,"file":"mobx-shared-state.d.ts","sourceRoot":"","sources":["../../src/types/mobx-shared-state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EACV,0BAA0B,EAC1B,YAAY,EACb,MAAM,yBAAyB,CAAC;AAEjC,MAAM,MAAM,2BAA2B,GAAG;IACxC,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,wBAAwB,EAAE,0BAA0B,EAAE,CAAC;IACvD,6BAA6B,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAC5D,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;CACrD,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,UAAU,EAAE,OAAO,CAAC;IACpB,sBAAsB,EAAE,OAAO,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,UAAU,EAAE,OAAO,CAAC;IACpB,YAAY,EAAE,IAAI,GAAG;QACnB,KAAK,EAAE,GAAG,GAAG,IAAI,CAAC;QAClB,MAAM,EAAE,GAAG,GAAG,IAAI,CAAC;KACpB,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,GAAG,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,oBAAoB,EAAE,2BAA2B,CAAC;IAClD,GAAG,EAAE,aAAa,CAAC;IACnB,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC/C,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACjD,WAAW,EAAE,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;CACrC,CAAC"}
@@ -1,8 +1,8 @@
1
+ import type { BaseBlock } from "@superblocksteam/shared";
2
+ import type { ApiRunRecord } from "./apis.js";
1
3
  import type { MobXPatch } from "./mobx-patch.js";
2
4
  import type { KeyToState } from "./mobx-shared-state.js";
3
5
  import type { AppScope } from "./scope.js";
4
- import type { GeneratedTheme, Theme } from "./theme.js";
5
- import type { BaseBlock } from "@superblocksteam/shared";
6
6
  export type DeleteMeLibraryApi = {
7
7
  apiPb: {
8
8
  metadata: {
@@ -15,8 +15,12 @@ export type DeleteMeLibraryApi = {
15
15
  };
16
16
  blocks?: BaseBlock[];
17
17
  trigger?: any;
18
+ authorization?: {
19
+ type?: "AUTHORIZATION_TYPE_APP_USERS" | "AUTHORIZATION_TYPE_JS_EXPRESSION";
20
+ expression?: string;
21
+ };
18
22
  };
19
- pageName: string;
23
+ pageName?: string;
20
24
  };
21
25
  export type SyncStoreInitPayload<T extends keyof KeyToState = keyof KeyToState> = {
22
26
  storeId: T;
@@ -32,10 +36,6 @@ export type SyncStoreUpdatePayload<T extends keyof KeyToState> = {
32
36
  */
33
37
  export type AppToEditorMessage<PropertiesPanelDefinition> = {
34
38
  "codeMode/initScopedEntities": AppScope;
35
- "codeMode/updateTheme": {
36
- theme: Theme;
37
- generatedTheme: GeneratedTheme;
38
- };
39
39
  "codeMode/addPropertiesPanel": {
40
40
  id: string;
41
41
  definition: PropertiesPanelDefinition;
@@ -46,6 +46,15 @@ export type AppToEditorMessage<PropertiesPanelDefinition> = {
46
46
  message: string;
47
47
  description?: string;
48
48
  };
49
+ "codeMode/addApiRunRecord": {
50
+ apiId: string;
51
+ run: ApiRunRecord;
52
+ };
53
+ "codeMode/updateApiRunRecord": {
54
+ apiId: string;
55
+ callId: string;
56
+ updates: Partial<Omit<ApiRunRecord, "id" | "callId">>;
57
+ };
49
58
  "codeMode/editor-synced-store/update": SyncStoreUpdatePayload<keyof KeyToState>;
50
59
  "codeMode/editor-synced-store/init": SyncStoreInitPayload<keyof KeyToState>;
51
60
  };
@@ -1 +1 @@
1
- {"version":3,"file":"parent-messages.d.ts","sourceRoot":"","sources":["../../src/types/parent-messages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEzD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,EAAE;QACL,QAAQ,EAAE;YACR,EAAE,EAAE,MAAM,CAAC;YACX,IAAI,EAAE,MAAM,CAAC;YACb,YAAY,EAAE,MAAM,CAAC;YACrB,UAAU,EAAE;gBAAE,OAAO,EAAE,MAAM,CAAA;aAAE,CAAC;SACjC,CAAC;QACF,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;QACrB,OAAO,CAAC,EAAE,GAAG,CAAC;KACf,CAAC;IACF,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,oBAAoB,CAC9B,CAAC,SAAS,MAAM,UAAU,GAAG,MAAM,UAAU,IAC3C;IACF,OAAO,EAAE,CAAC,CAAC;IACX,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,sBAAsB,CAAC,CAAC,SAAS,MAAM,UAAU,IAAI;IAC/D,OAAO,EAAE,CAAC,CAAC;IACX,KAAK,EAAE,SAAS,GAAG,SAAS,EAAE,CAAC;CAChC,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,kBAAkB,CAAC,yBAAyB,IAAI;IAC1D,6BAA6B,EAAE,QAAQ,CAAC;IACxC,sBAAsB,EAAE;QACtB,KAAK,EAAE,KAAK,CAAC;QACb,cAAc,EAAE,cAAc,CAAC;KAChC,CAAC;IACF,6BAA6B,EAAE;QAC7B,EAAE,EAAE,MAAM,CAAC;QACX,UAAU,EAAE,yBAAyB,CAAC;KACvC,CAAC;IACF,iCAAiC,EAAE,MAAM,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC;IAC7E,2BAA2B,EAAE;QAC3B,IAAI,EAAE,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;QAC/C,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;IAGF,qCAAqC,EAAE,sBAAsB,CAC3D,MAAM,UAAU,CACjB,CAAC;IACF,mCAAmC,EAAE,oBAAoB,CAAC,MAAM,UAAU,CAAC,CAAC;CAC7E,CAAC"}
1
+ {"version":3,"file":"parent-messages.d.ts","sourceRoot":"","sources":["../../src/types/parent-messages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,EAAE;QACL,QAAQ,EAAE;YACR,EAAE,EAAE,MAAM,CAAC;YACX,IAAI,EAAE,MAAM,CAAC;YACb,YAAY,EAAE,MAAM,CAAC;YACrB,UAAU,EAAE;gBAAE,OAAO,EAAE,MAAM,CAAA;aAAE,CAAC;SACjC,CAAC;QACF,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;QACrB,OAAO,CAAC,EAAE,GAAG,CAAC;QACd,aAAa,CAAC,EAAE;YACd,IAAI,CAAC,EACD,8BAA8B,GAC9B,kCAAkC,CAAC;YACvC,UAAU,CAAC,EAAE,MAAM,CAAC;SACrB,CAAC;KACH,CAAC;IACF,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,oBAAoB,CAC9B,CAAC,SAAS,MAAM,UAAU,GAAG,MAAM,UAAU,IAC3C;IACF,OAAO,EAAE,CAAC,CAAC;IACX,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,sBAAsB,CAAC,CAAC,SAAS,MAAM,UAAU,IAAI;IAC/D,OAAO,EAAE,CAAC,CAAC;IACX,KAAK,EAAE,SAAS,GAAG,SAAS,EAAE,CAAC;CAChC,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,kBAAkB,CAAC,yBAAyB,IAAI;IAC1D,6BAA6B,EAAE,QAAQ,CAAC;IACxC,6BAA6B,EAAE;QAC7B,EAAE,EAAE,MAAM,CAAC;QACX,UAAU,EAAE,yBAAyB,CAAC;KACvC,CAAC;IACF,iCAAiC,EAAE,MAAM,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC;IAC7E,2BAA2B,EAAE;QAC3B,IAAI,EAAE,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;QAC/C,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,0BAA0B,EAAE;QAC1B,KAAK,EAAE,MAAM,CAAC;QACd,GAAG,EAAE,YAAY,CAAC;KACnB,CAAC;IACF,6BAA6B,EAAE;QAC7B,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC;KACvD,CAAC;IAGF,qCAAqC,EAAE,sBAAsB,CAC3D,MAAM,UAAU,CACjB,CAAC;IACF,mCAAmC,EAAE,oBAAoB,CAAC,MAAM,UAAU,CAAC,CAAC;CAC7E,CAAC"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Core packages the Superblocks platform itself depends on to dev-serve,
3
+ * build, and run an application. When a private npm registry is missing one
4
+ * of these (`not_in_registry` / `dependency_conflict` install failures), the
5
+ * ONLY remediation is for an org admin to mirror it into the registry —
6
+ * removing it or refactoring the app away from it breaks the platform
7
+ * contract (the dev server, the bundle builder, or the runtime itself).
8
+ *
9
+ * Consumed by every surface that renders or acts on a dependency-install
10
+ * failure, so they all agree on what is refactorable:
11
+ * - `DevServerErrorOverlay` (ui): excludes these from the "Fix with
12
+ * Clark" refactor prompt and suppresses the CTA when nothing
13
+ * refactorable remains.
14
+ * - `buildRegistryPolicyParagraph` + `buildBlockedMessage`
15
+ * (vite-plugin-file-sync): tells Clark to never uninstall, replace, or
16
+ * refactor these away.
17
+ * - `AppShell.uninstallPackages` (vite-plugin-file-sync): hard-blocks
18
+ * uninstalls. `build_installPackages` refuses the same names first.
19
+ *
20
+ * Curation rule: a package belongs here only if the app cannot dev-serve,
21
+ * build, or boot without it. Template niceties (radix, lucide, recharts)
22
+ * stay refactorable.
23
+ */
24
+ /** Every package in this scope is platform-owned and protected. */
25
+ export declare const PROTECTED_PACKAGE_SCOPE = "@superblocksteam/";
26
+ /**
27
+ * Unscoped packages the platform requires. Verified against BOTH demo-app
28
+ * templates (`packages/demo-apps/app-fullstack`, `…/shadcn-demo-app`):
29
+ * - react / react-dom — the runtime `root.tsx` render path
30
+ * - react-router (+ legacy react-router-dom for brownfield apps) — app
31
+ * routing assumed by generated pages and the editor preview
32
+ * - vite — the dev server and `superblocks hidden:application:build`
33
+ * both run the app's own vite
34
+ * - typescript — the typecheck step of the build pipeline
35
+ * - @tailwindcss/vite + tailwindcss — imported by the templates'
36
+ * `vite.config.ts`, which is in `PROTECTED_EXACT_PATHS` (Clark cannot
37
+ * edit it). Uninstalling either bricks the build with no way for Clark
38
+ * to remove the plugin reference.
39
+ */
40
+ export declare const PROTECTED_CORE_PACKAGES: readonly string[];
41
+ export declare function isValidNpmPackageName(name: string): boolean;
42
+ export declare function isValidNpmVersionSpec(version: string): boolean;
43
+ /**
44
+ * Extract the package name from an npm spec ("react@^18.2.0" → "react",
45
+ * "@superblocksteam/library@2.0.0" → "@superblocksteam/library"). Names
46
+ * without a version pass through unchanged.
47
+ */
48
+ export declare function packageNameFromSpec(spec: string): string;
49
+ /**
50
+ * Whether a package (bare name or `name@version` spec) is a protected core
51
+ * package that must never be removed from an app.
52
+ */
53
+ export declare function isProtectedCorePackage(nameOrSpec: string): boolean;
54
+ //# sourceMappingURL=protected-packages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protected-packages.d.ts","sourceRoot":"","sources":["../../src/types/protected-packages.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,mEAAmE;AACnE,eAAO,MAAM,uBAAuB,sBAAsB,CAAC;AAE3D;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,uBAAuB,EAAE,SAAS,MAAM,EASpD,CAAC;AAqBF,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE3D;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAE9D;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGxD;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAMlE"}
@@ -0,0 +1,91 @@
1
+ /**
2
+ * Core packages the Superblocks platform itself depends on to dev-serve,
3
+ * build, and run an application. When a private npm registry is missing one
4
+ * of these (`not_in_registry` / `dependency_conflict` install failures), the
5
+ * ONLY remediation is for an org admin to mirror it into the registry —
6
+ * removing it or refactoring the app away from it breaks the platform
7
+ * contract (the dev server, the bundle builder, or the runtime itself).
8
+ *
9
+ * Consumed by every surface that renders or acts on a dependency-install
10
+ * failure, so they all agree on what is refactorable:
11
+ * - `DevServerErrorOverlay` (ui): excludes these from the "Fix with
12
+ * Clark" refactor prompt and suppresses the CTA when nothing
13
+ * refactorable remains.
14
+ * - `buildRegistryPolicyParagraph` + `buildBlockedMessage`
15
+ * (vite-plugin-file-sync): tells Clark to never uninstall, replace, or
16
+ * refactor these away.
17
+ * - `AppShell.uninstallPackages` (vite-plugin-file-sync): hard-blocks
18
+ * uninstalls. `build_installPackages` refuses the same names first.
19
+ *
20
+ * Curation rule: a package belongs here only if the app cannot dev-serve,
21
+ * build, or boot without it. Template niceties (radix, lucide, recharts)
22
+ * stay refactorable.
23
+ */
24
+ /** Every package in this scope is platform-owned and protected. */
25
+ export const PROTECTED_PACKAGE_SCOPE = "@superblocksteam/";
26
+ /**
27
+ * Unscoped packages the platform requires. Verified against BOTH demo-app
28
+ * templates (`packages/demo-apps/app-fullstack`, `…/shadcn-demo-app`):
29
+ * - react / react-dom — the runtime `root.tsx` render path
30
+ * - react-router (+ legacy react-router-dom for brownfield apps) — app
31
+ * routing assumed by generated pages and the editor preview
32
+ * - vite — the dev server and `superblocks hidden:application:build`
33
+ * both run the app's own vite
34
+ * - typescript — the typecheck step of the build pipeline
35
+ * - @tailwindcss/vite + tailwindcss — imported by the templates'
36
+ * `vite.config.ts`, which is in `PROTECTED_EXACT_PATHS` (Clark cannot
37
+ * edit it). Uninstalling either bricks the build with no way for Clark
38
+ * to remove the plugin reference.
39
+ */
40
+ export const PROTECTED_CORE_PACKAGES = [
41
+ "react",
42
+ "react-dom",
43
+ "react-router",
44
+ "react-router-dom",
45
+ "vite",
46
+ "typescript",
47
+ "@tailwindcss/vite",
48
+ "tailwindcss",
49
+ ];
50
+ /**
51
+ * Roughly npm's `validate-npm-package-name` "valid for new packages" rules:
52
+ * optional `@scope/` prefix, each segment starts with `[a-z0-9]`, then
53
+ * `[a-z0-9._-]`, at most 214 characters. Package names reach `exec` as part of
54
+ * a command string, so this doubles as the shell-injection guard.
55
+ */
56
+ const NPM_PACKAGE_NAME = /^(@[a-z0-9][a-z0-9._-]*\/)?[a-z0-9][a-z0-9._-]*$/;
57
+ /**
58
+ * Semver-range charset plus dist-tags (`latest`). The spec lands in
59
+ * `exec(\`cmd ${args.join(" ")}\`)` unquoted, so this allows only characters
60
+ * `/bin/sh` treats as literal: no `; $ backtick ( ) newline`, and no
61
+ * `& | > <` or space either. Ceiling: that also rejects `>=1.0.0`, `||`
62
+ * unions, and hyphen ranges, which the unquoted command already mangled
63
+ * into a redirect or an extra argv word. Widen this only after
64
+ * `installSpecificPackages` builds argv with `execFile`.
65
+ */
66
+ const NPM_VERSION_SPEC = /^[a-z0-9.+^~*=][a-z0-9.+^~*=-]*$/i;
67
+ export function isValidNpmPackageName(name) {
68
+ return name.length <= 214 && NPM_PACKAGE_NAME.test(name);
69
+ }
70
+ export function isValidNpmVersionSpec(version) {
71
+ return NPM_VERSION_SPEC.test(version);
72
+ }
73
+ /**
74
+ * Extract the package name from an npm spec ("react@^18.2.0" → "react",
75
+ * "@superblocksteam/library@2.0.0" → "@superblocksteam/library"). Names
76
+ * without a version pass through unchanged.
77
+ */
78
+ export function packageNameFromSpec(spec) {
79
+ const at = spec.indexOf("@", spec.startsWith("@") ? 1 : 0);
80
+ return at === -1 ? spec : spec.slice(0, at);
81
+ }
82
+ /**
83
+ * Whether a package (bare name or `name@version` spec) is a protected core
84
+ * package that must never be removed from an app.
85
+ */
86
+ export function isProtectedCorePackage(nameOrSpec) {
87
+ const name = packageNameFromSpec(nameOrSpec.trim());
88
+ return (name.startsWith(PROTECTED_PACKAGE_SCOPE) ||
89
+ PROTECTED_CORE_PACKAGES.includes(name));
90
+ }
91
+ //# sourceMappingURL=protected-packages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protected-packages.js","sourceRoot":"","sources":["../../src/types/protected-packages.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,mEAAmE;AACnE,MAAM,CAAC,MAAM,uBAAuB,GAAG,mBAAmB,CAAC;AAE3D;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAsB;IACxD,OAAO;IACP,WAAW;IACX,cAAc;IACd,kBAAkB;IAClB,MAAM;IACN,YAAY;IACZ,mBAAmB;IACnB,aAAa;CACd,CAAC;AAEF;;;;;GAKG;AACH,MAAM,gBAAgB,GAAG,kDAAkD,CAAC;AAE5E;;;;;;;;GAQG;AACH,MAAM,gBAAgB,GAAG,mCAAmC,CAAC;AAE7D,MAAM,UAAU,qBAAqB,CAAC,IAAY;IAChD,OAAO,IAAI,CAAC,MAAM,IAAI,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,OAAe;IACnD,OAAO,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACxC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3D,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC9C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,UAAkB;IACvD,MAAM,IAAI,GAAG,mBAAmB,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;IACpD,OAAO,CACL,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAAC;QACxC,uBAAuB,CAAC,QAAQ,CAAC,IAAI,CAAC,CACvC,CAAC;AACJ,CAAC"}