@intentic/sdk 1.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Artur Kurowski
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,26 @@
1
+ # @intentic/sdk
2
+
3
+ The **authoring surface** a user writes their `deploy.config.ts` against. A declaration uses `i.have.host` / `i.have.cloudflare` (the inventory you have) and `i.want.app` (what you want), wiring each app to its host/Cloudflare via `on` / `expose`. The support stack each app needs (git+CI, deploy orchestrator, runner, tunnel, routes) is *derived* by the resolvers — authors never name it. Depends on [`@intentic/graph`](../graph), [`@intentic/need-resolver`](../need-resolver), and [`@intentic/state-resolver`](../state-resolver).
4
+
5
+ ## Responsibilities
6
+
7
+ - Provide the fluent `i.have.*` / `i.want.*` builders and capture them into an `IntentSet`.
8
+ - `defineIntent` — the authoring entry: declaration → `IntentSet` (what `intentic resolve` consumes).
9
+ - `defineStack` — one-shot convenience: declaration → a single compiled `DesiredStateGraph`.
10
+ - Export the handle types (`Host`, `Cloudflare`, `App`, `Repo`, `Deployment`, …) used to wire declarations.
11
+
12
+ ## Key files
13
+
14
+ - [src/index.ts](src/index.ts) — `defineIntent` / `defineStack` (public entry).
15
+ - [src/handles.ts](src/handles.ts) — the `i.have`/`i.want` builders and handle types.
16
+ - [src/stack.ts](src/stack.ts) — assembles the `IntentSet` and runs the resolver pipeline.
17
+ - [src/\_\_fixtures\_\_](src/__fixtures__) — the canonical `deploy.config.ts` + expected graph (snapshot).
18
+
19
+ ## How it fits
20
+
21
+ The front door of the pipeline. A `deploy.config.ts` imports this + `@intentic/graph`; `defineIntent` yields an `IntentSet`; `need-resolver` then `state-resolver` turn it into the `DesiredStateGraph` the `engine` reconciles.
22
+
23
+ ## Conventions & gotchas
24
+
25
+ - Authors import `env` (secret refs) from its true source, [`@intentic/graph`](../graph) — **not** re-exported here.
26
+ - The fixtures are snapshot-tested ([src/index.test.ts](src/index.test.ts), [src/deploy.config.test.ts](src/deploy.config.test.ts)); changing builder output updates them. See [examples/deploy.config.ts](../../examples/deploy.config.ts) and [ARCHITECTURE.md](../../ARCHITECTURE.md).
@@ -0,0 +1,2 @@
1
+ export declare const graph: import("@intentic/graph").DesiredStateGraph;
2
+ //# sourceMappingURL=deploy.config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy.config.d.ts","sourceRoot":"","sources":["../../src/__fixtures__/deploy.config.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,KAAK,6CAgCjB,CAAC"}
@@ -0,0 +1,24 @@
1
+ import { env } from "@intentic/graph";
2
+ import { defineStack } from "../index.js";
3
+ export const graph = defineStack((i) => {
4
+ const host = i.have.host("host", {
5
+ address: "203.0.113.10",
6
+ user: "deploy",
7
+ sshKey: env("HOST_SSH_KEY"),
8
+ });
9
+ const cf = i.have.cloudflare("cf", {
10
+ apiToken: env("CLOUDFLARE_API_TOKEN"),
11
+ });
12
+ const dev = i.want.user("dev", { username: "dev", email: "dev@example.com" });
13
+ const squad = i.want.team("squad", { members: [dev], komodo: "execute" });
14
+ i.want.app("my-app", {
15
+ on: host,
16
+ expose: cf,
17
+ teams: [{ team: squad, role: "write" }],
18
+ environments: {
19
+ staging: { domain: "staging.example.com", branch: "develop", env: { DATABASE_URL: env("STAGING_DATABASE_URL") } },
20
+ production: { domain: "app.example.com", branch: "main", env: { DATABASE_URL: env("PRODUCTION_DATABASE_URL") } },
21
+ },
22
+ });
23
+ }, "example.com");
24
+ //# sourceMappingURL=deploy.config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy.config.js","sourceRoot":"","sources":["../../src/__fixtures__/deploy.config.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,CAAC,MAAM,KAAK,GAAG,WAAW,CAC5B,CAAC,CAAC,EAAE,EAAE;IAEF,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;QAC7B,OAAO,EAAE,cAAc;QACvB,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE,GAAG,CAAC,cAAc,CAAC;KAC9B,CAAC,CAAC;IAEH,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;QAC/B,QAAQ,EAAE,GAAG,CAAC,sBAAsB,CAAC;KACxC,CAAC,CAAC;IAGH,MAAM,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC,CAAC;IAC9E,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;IAK1E,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE;QACjB,EAAE,EAAE,IAAI;QACR,MAAM,EAAE,EAAE;QACV,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QACvC,YAAY,EAAE;YACV,OAAO,EAAE,EAAE,MAAM,EAAE,qBAAqB,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,EAAE,YAAY,EAAE,GAAG,CAAC,sBAAsB,CAAC,EAAE,EAAE;YACjH,UAAU,EAAE,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,YAAY,EAAE,GAAG,CAAC,yBAAyB,CAAC,EAAE,EAAE;SACnH;KACJ,CAAC,CAAC;AACP,CAAC,EAED,aAAa,CAChB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { DesiredStateGraph } from "@intentic/graph";
2
+ export declare const expectedGraph: DesiredStateGraph;
3
+ //# sourceMappingURL=deploy.graph.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy.graph.d.ts","sourceRoot":"","sources":["../../src/__fixtures__/deploy.graph.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAOzD,eAAO,MAAM,aAAa,EAAE,iBA6hB3B,CAAC"}
@@ -0,0 +1,542 @@
1
+ export const expectedGraph = {
2
+ version: 1,
3
+ resources: {
4
+ host: {
5
+ id: "host",
6
+ type: "host",
7
+ inputs: {
8
+ address: "203.0.113.10",
9
+ user: "deploy",
10
+ sshKey: {
11
+ $secret: {
12
+ source: "env",
13
+ key: "HOST_SSH_KEY",
14
+ },
15
+ },
16
+ },
17
+ dependsOn: [],
18
+ },
19
+ cf: {
20
+ id: "cf",
21
+ type: "cloudflare",
22
+ inputs: {
23
+ apiToken: {
24
+ $secret: {
25
+ source: "env",
26
+ key: "CLOUDFLARE_API_TOKEN",
27
+ },
28
+ },
29
+ zone: "example.com",
30
+ },
31
+ dependsOn: [],
32
+ },
33
+ "host-git": {
34
+ id: "host-git",
35
+ type: "forgejo",
36
+ inputs: {
37
+ server: {
38
+ $ref: "host",
39
+ },
40
+ address: "203.0.113.10",
41
+ user: "deploy",
42
+ sshKey: {
43
+ $secret: {
44
+ source: "env",
45
+ key: "HOST_SSH_KEY",
46
+ },
47
+ },
48
+ internalIp: {
49
+ $ref: "host.internalIp",
50
+ },
51
+ domain: "git.example.com",
52
+ adminUser: "intentic",
53
+ adminPassword: {
54
+ $secret: {
55
+ source: "generated",
56
+ key: "FORGEJO_ADMIN_PASSWORD",
57
+ },
58
+ },
59
+ image: "codeberg.org/forgejo/forgejo:15.0.3@sha256:55bb42bec9abef5223744804f164e37d37b20df7e8b8b4807ba213ad4f071d6d",
60
+ },
61
+ dependsOn: ["host"],
62
+ readyWhen: {
63
+ check: "httpOk",
64
+ url: {
65
+ $ref: "host-git.internalUrl",
66
+ },
67
+ timeout: "120s",
68
+ },
69
+ },
70
+ "host-git-runner": {
71
+ id: "host-git-runner",
72
+ type: "forgejo-runner",
73
+ inputs: {
74
+ server: {
75
+ $ref: "host",
76
+ },
77
+ address: "203.0.113.10",
78
+ user: "deploy",
79
+ sshKey: {
80
+ $secret: {
81
+ source: "env",
82
+ key: "HOST_SSH_KEY",
83
+ },
84
+ },
85
+ instanceUrl: {
86
+ $ref: "host-git.internalUrl",
87
+ },
88
+ token: {
89
+ $ref: "host-git.runnerToken",
90
+ },
91
+ image: "data.forgejo.org/forgejo/runner:12.12.0@sha256:268ad0d1d24bd7ecf2386b7c44e8211398dc014ca81d4fd5fbad96fe79af18f5",
92
+ jobImage: "data.forgejo.org/oci/node:24-bookworm@sha256:fdddfb3e688158251943d52eba361de991548f6814007acba4917ae6b512d6be",
93
+ },
94
+ dependsOn: ["host", "host-git"],
95
+ },
96
+ "host-deploy": {
97
+ id: "host-deploy",
98
+ type: "komodo",
99
+ inputs: {
100
+ server: {
101
+ $ref: "host",
102
+ },
103
+ address: "203.0.113.10",
104
+ user: "deploy",
105
+ sshKey: {
106
+ $secret: {
107
+ source: "env",
108
+ key: "HOST_SSH_KEY",
109
+ },
110
+ },
111
+ internalIp: {
112
+ $ref: "host.internalIp",
113
+ },
114
+ domain: "deploy.example.com",
115
+ forgejoUrl: {
116
+ $ref: "host-git.internalUrl",
117
+ },
118
+ runnerToken: {
119
+ $ref: "host-git.runnerToken",
120
+ },
121
+ adminUser: "intentic",
122
+ adminPassword: {
123
+ $secret: {
124
+ source: "generated",
125
+ key: "KOMODO_ADMIN_PASSWORD",
126
+ },
127
+ },
128
+ gitAccount: "intentic",
129
+ gitToken: {
130
+ $ref: "host-git.gitToken",
131
+ },
132
+ registry: "git.example.com",
133
+ packagesToken: {
134
+ $ref: "host-git.packagesToken",
135
+ },
136
+ coreImage: "ghcr.io/moghtech/komodo-core:2.1.0@sha256:4915d91b5c6e9de4e8fd59391eed5cad090ec84dcf6a1a9233d97edfdbbb88e7",
137
+ peripheryImage: "ghcr.io/moghtech/komodo-periphery:2.1.0@sha256:f5b272e3d9acd60d4eac69ea4fa0292dcaddfdecfc2be64ba5575e5ae18e72ae",
138
+ ferretdbImage: "ghcr.io/ferretdb/ferretdb:2.7.0@sha256:5706414241eb84f0515512c37b46db0f1b1eac9e5ceb7e4c2523211c184b1985",
139
+ postgresImage: "ghcr.io/ferretdb/postgres-documentdb:17-0.107.0-ferretdb-2.7.0@sha256:2386795ec2aa7ae559304361979f1dc5708d383ee9020ae63dadc2940dfe58f7",
140
+ },
141
+ dependsOn: ["host", "host-git"],
142
+ readyWhen: {
143
+ check: "httpOk",
144
+ url: {
145
+ $ref: "host-deploy.internalUrl",
146
+ },
147
+ timeout: "90s",
148
+ },
149
+ },
150
+ "cf-git-example-com": {
151
+ id: "cf-git-example-com",
152
+ type: "cf-route",
153
+ inputs: {
154
+ hostname: "git.example.com",
155
+ zoneId: {
156
+ $ref: "cf.zoneId",
157
+ },
158
+ apiToken: {
159
+ $secret: {
160
+ source: "env",
161
+ key: "CLOUDFLARE_API_TOKEN",
162
+ },
163
+ },
164
+ cname: {
165
+ $ref: "host-tunnel.cname",
166
+ },
167
+ },
168
+ dependsOn: ["cf", "host-tunnel"],
169
+ },
170
+ "cf-deploy-example-com": {
171
+ id: "cf-deploy-example-com",
172
+ type: "cf-route",
173
+ inputs: {
174
+ hostname: "deploy.example.com",
175
+ zoneId: {
176
+ $ref: "cf.zoneId",
177
+ },
178
+ apiToken: {
179
+ $secret: {
180
+ source: "env",
181
+ key: "CLOUDFLARE_API_TOKEN",
182
+ },
183
+ },
184
+ cname: {
185
+ $ref: "host-tunnel.cname",
186
+ },
187
+ },
188
+ dependsOn: ["cf", "host-tunnel"],
189
+ },
190
+ "my-app-repo": {
191
+ id: "my-app-repo",
192
+ type: "repo",
193
+ inputs: {
194
+ name: "my-app",
195
+ owner: "squad",
196
+ private: true,
197
+ forgejoUrl: {
198
+ $ref: "host-git.url",
199
+ },
200
+ domain: "git.example.com",
201
+ adminUser: "intentic",
202
+ adminPassword: {
203
+ $secret: {
204
+ source: "generated",
205
+ key: "FORGEJO_ADMIN_PASSWORD",
206
+ },
207
+ },
208
+ },
209
+ dependsOn: ["host-git", "cf-git-example-com", "host-git-org-squad"],
210
+ },
211
+ "my-app.staging-ci": {
212
+ id: "my-app.staging-ci",
213
+ type: "ci",
214
+ inputs: {
215
+ forgejoUrl: {
216
+ $ref: "host-git.url",
217
+ },
218
+ adminUser: "intentic",
219
+ adminPassword: {
220
+ $secret: {
221
+ source: "generated",
222
+ key: "FORGEJO_ADMIN_PASSWORD",
223
+ },
224
+ },
225
+ komodoPassword: {
226
+ $secret: {
227
+ source: "generated",
228
+ key: "KOMODO_ADMIN_PASSWORD",
229
+ },
230
+ },
231
+ owner: "squad",
232
+ repoName: "my-app",
233
+ branch: "develop",
234
+ registry: "git.example.com",
235
+ tag: "staging",
236
+ packagesToken: {
237
+ $ref: "host-git.packagesToken",
238
+ },
239
+ komodoUrl: {
240
+ $ref: "host-deploy.internalUrl",
241
+ },
242
+ deployment: "my-app.staging",
243
+ },
244
+ dependsOn: ["host-git", "cf-git-example-com", "host-deploy", "my-app-repo", "host-git-org-squad"],
245
+ },
246
+ "my-app.staging": {
247
+ id: "my-app.staging",
248
+ type: "deployment",
249
+ inputs: {
250
+ owner: "squad",
251
+ repoName: "my-app",
252
+ registry: "git.example.com",
253
+ tag: "staging",
254
+ domain: "staging.example.com",
255
+ internalIp: {
256
+ $ref: "host.internalIp",
257
+ },
258
+ port: 27748,
259
+ komodoUrl: {
260
+ $ref: "host-deploy.url",
261
+ },
262
+ adminUser: "intentic",
263
+ adminPassword: {
264
+ $secret: {
265
+ source: "generated",
266
+ key: "KOMODO_ADMIN_PASSWORD",
267
+ },
268
+ },
269
+ env: {
270
+ DATABASE_URL: {
271
+ $secret: {
272
+ source: "env",
273
+ key: "STAGING_DATABASE_URL",
274
+ },
275
+ },
276
+ },
277
+ },
278
+ dependsOn: ["my-app.staging-ci", "cf-deploy-example-com", "host", "host-deploy"],
279
+ },
280
+ "cf-staging-example-com": {
281
+ id: "cf-staging-example-com",
282
+ type: "cf-route",
283
+ inputs: {
284
+ hostname: "staging.example.com",
285
+ zoneId: {
286
+ $ref: "cf.zoneId",
287
+ },
288
+ apiToken: {
289
+ $secret: {
290
+ source: "env",
291
+ key: "CLOUDFLARE_API_TOKEN",
292
+ },
293
+ },
294
+ cname: {
295
+ $ref: "host-tunnel.cname",
296
+ },
297
+ },
298
+ dependsOn: ["cf", "host-tunnel"],
299
+ },
300
+ "my-app.production-ci": {
301
+ id: "my-app.production-ci",
302
+ type: "ci",
303
+ inputs: {
304
+ forgejoUrl: {
305
+ $ref: "host-git.url",
306
+ },
307
+ adminUser: "intentic",
308
+ adminPassword: {
309
+ $secret: {
310
+ source: "generated",
311
+ key: "FORGEJO_ADMIN_PASSWORD",
312
+ },
313
+ },
314
+ komodoPassword: {
315
+ $secret: {
316
+ source: "generated",
317
+ key: "KOMODO_ADMIN_PASSWORD",
318
+ },
319
+ },
320
+ owner: "squad",
321
+ repoName: "my-app",
322
+ branch: "main",
323
+ registry: "git.example.com",
324
+ tag: "production",
325
+ packagesToken: {
326
+ $ref: "host-git.packagesToken",
327
+ },
328
+ komodoUrl: {
329
+ $ref: "host-deploy.internalUrl",
330
+ },
331
+ deployment: "my-app.production",
332
+ },
333
+ dependsOn: ["host-git", "cf-git-example-com", "host-deploy", "my-app-repo", "host-git-org-squad"],
334
+ },
335
+ "my-app.production": {
336
+ id: "my-app.production",
337
+ type: "deployment",
338
+ inputs: {
339
+ owner: "squad",
340
+ repoName: "my-app",
341
+ registry: "git.example.com",
342
+ tag: "production",
343
+ domain: "app.example.com",
344
+ internalIp: {
345
+ $ref: "host.internalIp",
346
+ },
347
+ port: 23104,
348
+ komodoUrl: {
349
+ $ref: "host-deploy.url",
350
+ },
351
+ adminUser: "intentic",
352
+ adminPassword: {
353
+ $secret: {
354
+ source: "generated",
355
+ key: "KOMODO_ADMIN_PASSWORD",
356
+ },
357
+ },
358
+ env: {
359
+ DATABASE_URL: {
360
+ $secret: {
361
+ source: "env",
362
+ key: "PRODUCTION_DATABASE_URL",
363
+ },
364
+ },
365
+ },
366
+ },
367
+ dependsOn: ["my-app.production-ci", "cf-deploy-example-com", "host", "host-deploy"],
368
+ },
369
+ "cf-app-example-com": {
370
+ id: "cf-app-example-com",
371
+ type: "cf-route",
372
+ inputs: {
373
+ hostname: "app.example.com",
374
+ zoneId: {
375
+ $ref: "cf.zoneId",
376
+ },
377
+ apiToken: {
378
+ $secret: {
379
+ source: "env",
380
+ key: "CLOUDFLARE_API_TOKEN",
381
+ },
382
+ },
383
+ cname: {
384
+ $ref: "host-tunnel.cname",
385
+ },
386
+ },
387
+ dependsOn: ["cf", "host-tunnel"],
388
+ },
389
+ "host-git-user-dev": {
390
+ id: "host-git-user-dev",
391
+ type: "forgejo-user",
392
+ inputs: {
393
+ forgejoUrl: {
394
+ $ref: "host-git.url",
395
+ },
396
+ adminUser: "intentic",
397
+ adminPassword: {
398
+ $secret: {
399
+ source: "generated",
400
+ key: "FORGEJO_ADMIN_PASSWORD",
401
+ },
402
+ },
403
+ username: "dev",
404
+ email: "dev@example.com",
405
+ accountPassword: {
406
+ $secret: {
407
+ source: "generated",
408
+ key: "INTENTIC_USER_PASSWORD_DEV",
409
+ },
410
+ },
411
+ },
412
+ dependsOn: ["host-git", "cf-git-example-com"],
413
+ },
414
+ "host-deploy-user-dev": {
415
+ id: "host-deploy-user-dev",
416
+ type: "komodo-user",
417
+ inputs: {
418
+ komodoUrl: {
419
+ $ref: "host-deploy.url",
420
+ },
421
+ adminUser: "intentic",
422
+ adminPassword: {
423
+ $secret: {
424
+ source: "generated",
425
+ key: "KOMODO_ADMIN_PASSWORD",
426
+ },
427
+ },
428
+ username: "dev",
429
+ password: {
430
+ $secret: {
431
+ source: "generated",
432
+ key: "INTENTIC_USER_PASSWORD_DEV",
433
+ },
434
+ },
435
+ grants: [
436
+ {
437
+ deployment: "my-app.staging",
438
+ level: "Execute",
439
+ },
440
+ {
441
+ deployment: "my-app.production",
442
+ level: "Execute",
443
+ },
444
+ ],
445
+ },
446
+ dependsOn: ["host-deploy", "cf-deploy-example-com", "my-app.staging", "my-app.production"],
447
+ },
448
+ "host-git-org-squad": {
449
+ id: "host-git-org-squad",
450
+ type: "forgejo-org",
451
+ inputs: {
452
+ forgejoUrl: {
453
+ $ref: "host-git.url",
454
+ },
455
+ adminUser: "intentic",
456
+ adminPassword: {
457
+ $secret: {
458
+ source: "generated",
459
+ key: "FORGEJO_ADMIN_PASSWORD",
460
+ },
461
+ },
462
+ org: "squad",
463
+ },
464
+ dependsOn: ["host-git", "cf-git-example-com"],
465
+ },
466
+ "host-git-org-squad-team": {
467
+ id: "host-git-org-squad-team",
468
+ type: "forgejo-team",
469
+ inputs: {
470
+ forgejoUrl: {
471
+ $ref: "host-git.url",
472
+ },
473
+ adminUser: "intentic",
474
+ adminPassword: {
475
+ $secret: {
476
+ source: "generated",
477
+ key: "FORGEJO_ADMIN_PASSWORD",
478
+ },
479
+ },
480
+ org: "squad",
481
+ name: "members",
482
+ permission: "write",
483
+ members: ["dev"],
484
+ repos: [
485
+ {
486
+ owner: "squad",
487
+ name: "my-app",
488
+ },
489
+ ],
490
+ },
491
+ dependsOn: ["host-git-org-squad", "host-git-user-dev", "my-app-repo", "host-git"],
492
+ },
493
+ "host-tunnel": {
494
+ id: "host-tunnel",
495
+ type: "tunnel",
496
+ inputs: {
497
+ name: "intentic-host",
498
+ accountId: {
499
+ $ref: "cf.accountId",
500
+ },
501
+ apiToken: {
502
+ $secret: {
503
+ source: "env",
504
+ key: "CLOUDFLARE_API_TOKEN",
505
+ },
506
+ },
507
+ address: "203.0.113.10",
508
+ user: "deploy",
509
+ sshKey: {
510
+ $secret: {
511
+ source: "env",
512
+ key: "HOST_SSH_KEY",
513
+ },
514
+ },
515
+ internalIp: {
516
+ $ref: "host.internalIp",
517
+ },
518
+ ingress: [
519
+ {
520
+ hostname: "git.example.com",
521
+ port: 3000,
522
+ },
523
+ {
524
+ hostname: "deploy.example.com",
525
+ port: 9120,
526
+ },
527
+ {
528
+ hostname: "staging.example.com",
529
+ port: 27748,
530
+ },
531
+ {
532
+ hostname: "app.example.com",
533
+ port: 23104,
534
+ },
535
+ ],
536
+ image: "cloudflare/cloudflared:2026.6.1@sha256:6d91c121b803126f7a5344005d17a9324788fc09d305b6e2560ec6040a7ae283",
537
+ },
538
+ dependsOn: ["cf", "host"],
539
+ },
540
+ },
541
+ };
542
+ //# sourceMappingURL=deploy.graph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy.graph.js","sourceRoot":"","sources":["../../src/__fixtures__/deploy.graph.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,121 @@
1
+ import type { Ref } from "@intentic/graph";
2
+ import type { BackupInput, CloudflareInput, DiscordInput, EnvironmentInput, ForgejoRole, GitHubInput, HostInput, KomodoRole, ServiceInput, UserInput } from "@intentic/need-resolver";
3
+ export interface Host extends Ref<"host"> {
4
+ readonly internalIp: Ref<string>;
5
+ readonly publicIp: Ref<string>;
6
+ }
7
+ export interface Cloudflare extends Ref<"cloudflare"> {
8
+ readonly zoneId: Ref<string>;
9
+ readonly accountId: Ref<string>;
10
+ }
11
+ export interface GitHub extends Ref<"github"> {
12
+ readonly owner: Ref<string>;
13
+ }
14
+ export interface Repo extends Ref<"repo"> {
15
+ readonly cloneUrl: Ref<string>;
16
+ readonly sshUrl: Ref<string>;
17
+ }
18
+ export interface Deployment extends Ref<"deployment"> {
19
+ readonly internalUrl: Ref<string>;
20
+ readonly url: Ref<string>;
21
+ }
22
+ export interface App<Names extends string = string> extends Ref<"app"> {
23
+ readonly repo: Repo;
24
+ readonly environments: Readonly<Record<Names, Deployment>>;
25
+ }
26
+ export type User = Ref<"forgejo-user">;
27
+ export type Team = Ref<"forgejo-team">;
28
+ export type Backup = Ref<"backup">;
29
+ export type Discord = Ref<"discord">;
30
+ export interface WantTeamInput {
31
+ members: readonly User[];
32
+ komodo: KomodoRole;
33
+ }
34
+ export interface AppTeamGrant {
35
+ team: Team;
36
+ role: ForgejoRole;
37
+ }
38
+ export interface Service extends Ref<"signoz"> {
39
+ readonly url: Ref<string>;
40
+ readonly internalUrl: Ref<string>;
41
+ readonly otlpEndpoint: Ref<string>;
42
+ }
43
+ export interface Workspace extends Ref<"workspace"> {
44
+ readonly internalUrl: Ref<string>;
45
+ readonly healthUrl: Ref<string>;
46
+ readonly previewBase: Ref<string>;
47
+ }
48
+ export interface Database extends Ref<"postgres"> {
49
+ readonly internalHost: Ref<string>;
50
+ readonly port: Ref<string>;
51
+ }
52
+ export interface Cache extends Ref<"valkey"> {
53
+ readonly internalHost: Ref<string>;
54
+ readonly port: Ref<string>;
55
+ }
56
+ export interface Auth extends Ref<"authentik"> {
57
+ readonly url: Ref<string>;
58
+ readonly issuerUrl: Ref<string>;
59
+ readonly internalUrl: Ref<string>;
60
+ }
61
+ export interface ObjectStorage extends Ref<"garage"> {
62
+ readonly endpoint: Ref<string>;
63
+ readonly internalEndpoint: Ref<string>;
64
+ }
65
+ export type Backing = Database | Cache | Auth | ObjectStorage;
66
+ export interface WantAppInput {
67
+ on: Host;
68
+ expose: Cloudflare;
69
+ notify?: Discord;
70
+ observe?: Service;
71
+ use?: readonly Backing[];
72
+ teams?: readonly AppTeamGrant[];
73
+ environments: Record<string, EnvironmentInput>;
74
+ }
75
+ export interface WantServiceInput extends ServiceInput {
76
+ on: Host;
77
+ expose: Cloudflare;
78
+ }
79
+ export interface WantWorkspaceInput {
80
+ on: Host;
81
+ expose: Cloudflare;
82
+ platformUrl?: string;
83
+ agentBaseUrl?: string;
84
+ }
85
+ export interface Have {
86
+ host(id: string, input: HostInput): Host;
87
+ cloudflare(id: string, input: CloudflareInput): Cloudflare;
88
+ github(id: string, input: GitHubInput): GitHub;
89
+ backup(id: string, input: BackupInput): Backup;
90
+ discord(id: string, input: DiscordInput): Discord;
91
+ }
92
+ export interface Want {
93
+ app<const E extends Record<string, EnvironmentInput>>(id: string, input: WantAppInput & {
94
+ environments: E;
95
+ }): App<keyof E & string>;
96
+ service(id: string, input: WantServiceInput): Service;
97
+ workspace(id: string, input: WantWorkspaceInput): Workspace;
98
+ database(id: string, input: {
99
+ on: Host;
100
+ }): Database;
101
+ cache(id: string, input: {
102
+ on: Host;
103
+ }): Cache;
104
+ auth(id: string, input: {
105
+ on: Host;
106
+ expose: Cloudflare;
107
+ domain: string;
108
+ }): Auth;
109
+ objectStorage(id: string, input: {
110
+ on: Host;
111
+ expose?: Cloudflare;
112
+ domain?: string;
113
+ }): ObjectStorage;
114
+ user(id: string, input: UserInput): User;
115
+ team(id: string, input: WantTeamInput): Team;
116
+ }
117
+ export interface Stack {
118
+ readonly have: Have;
119
+ readonly want: Want;
120
+ }
121
+ //# sourceMappingURL=handles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handles.d.ts","sourceRoot":"","sources":["../src/handles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,KAAK,EACR,WAAW,EACX,eAAe,EACf,YAAY,EACZ,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,SAAS,EACT,UAAU,EACV,YAAY,EACZ,SAAS,EACZ,MAAM,yBAAyB,CAAC;AAUjC,MAAM,WAAW,IAAK,SAAQ,GAAG,CAAC,MAAM,CAAC;IACrC,QAAQ,CAAC,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACjC,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,UAAW,SAAQ,GAAG,CAAC,YAAY,CAAC;IACjD,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,MAAO,SAAQ,GAAG,CAAC,QAAQ,CAAC;IACzC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC/B;AAID,MAAM,WAAW,IAAK,SAAQ,GAAG,CAAC,MAAM,CAAC;IACrC,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,UAAW,SAAQ,GAAG,CAAC,YAAY,CAAC;IACjD,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAClC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC7B;AAED,MAAM,WAAW,GAAG,CAAC,KAAK,SAAS,MAAM,GAAG,MAAM,CAAE,SAAQ,GAAG,CAAC,KAAK,CAAC;IAClE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC;CAC9D;AAMD,MAAM,MAAM,IAAI,GAAG,GAAG,CAAC,cAAc,CAAC,CAAC;AACvC,MAAM,MAAM,IAAI,GAAG,GAAG,CAAC,cAAc,CAAC,CAAC;AAIvC,MAAM,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC;AAInC,MAAM,MAAM,OAAO,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC;AAGrC,MAAM,WAAW,aAAa;IAC1B,OAAO,EAAE,SAAS,IAAI,EAAE,CAAC;IACzB,MAAM,EAAE,UAAU,CAAC;CACtB;AAGD,MAAM,WAAW,YAAY;IACzB,IAAI,EAAE,IAAI,CAAC;IACX,IAAI,EAAE,WAAW,CAAC;CACrB;AAID,MAAM,WAAW,OAAQ,SAAQ,GAAG,CAAC,QAAQ,CAAC;IAC1C,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAElC,QAAQ,CAAC,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACtC;AAKD,MAAM,WAAW,SAAU,SAAQ,GAAG,CAAC,WAAW,CAAC;IAG/C,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAClC,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACrC;AAQD,MAAM,WAAW,QAAS,SAAQ,GAAG,CAAC,UAAU,CAAC;IAC7C,QAAQ,CAAC,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACnC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC9B;AAGD,MAAM,WAAW,KAAM,SAAQ,GAAG,CAAC,QAAQ,CAAC;IACxC,QAAQ,CAAC,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACnC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC9B;AAID,MAAM,WAAW,IAAK,SAAQ,GAAG,CAAC,WAAW,CAAC;IAC1C,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACrC;AAID,MAAM,WAAW,aAAc,SAAQ,GAAG,CAAC,QAAQ,CAAC;IAChD,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC/B,QAAQ,CAAC,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC1C;AAID,MAAM,MAAM,OAAO,GAAG,QAAQ,GAAG,KAAK,GAAG,IAAI,GAAG,aAAa,CAAC;AAI9D,MAAM,WAAW,YAAY;IACzB,EAAE,EAAE,IAAI,CAAC;IACT,MAAM,EAAE,UAAU,CAAC;IAEnB,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAIlB,GAAG,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;IAGzB,KAAK,CAAC,EAAE,SAAS,YAAY,EAAE,CAAC;IAChC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;CAClD;AAED,MAAM,WAAW,gBAAiB,SAAQ,YAAY;IAClD,EAAE,EAAE,IAAI,CAAC;IACT,MAAM,EAAE,UAAU,CAAC;CACtB;AAKD,MAAM,WAAW,kBAAkB;IAC/B,EAAE,EAAE,IAAI,CAAC;IACT,MAAM,EAAE,UAAU,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IAIrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,IAAI;IACjB,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;IACzC,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,GAAG,UAAU,CAAC;IAC3D,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,MAAM,CAAC;IAC/C,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,MAAM,CAAC;IAC/C,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC;CACrD;AAED,MAAM,WAAW,IAAI;IAEjB,GAAG,CAAC,KAAK,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG;QAAE,YAAY,EAAE,CAAC,CAAA;KAAE,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC;IACpI,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC;IAGtD,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,GAAG,SAAS,CAAC;IAI5D,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;QAAE,EAAE,EAAE,IAAI,CAAA;KAAE,GAAG,QAAQ,CAAC;IACpD,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;QAAE,EAAE,EAAE,IAAI,CAAA;KAAE,GAAG,KAAK,CAAC;IAC9C,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;QAAE,EAAE,EAAE,IAAI,CAAC;QAAC,MAAM,EAAE,UAAU,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAChF,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;QAAE,EAAE,EAAE,IAAI,CAAC;QAAC,MAAM,CAAC,EAAE,UAAU,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,aAAa,CAAC;IACpG,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;IACzC,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,GAAG,IAAI,CAAC;CAChD;AAED,MAAM,WAAW,KAAK;IAClB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;CACvB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=handles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handles.js","sourceRoot":"","sources":["../src/handles.ts"],"names":[],"mappings":""}
@@ -0,0 +1,7 @@
1
+ import type { DesiredStateGraph } from "@intentic/graph";
2
+ import type { IntentSet } from "@intentic/need-resolver";
3
+ import type { Stack } from "./handles.js";
4
+ export declare const defineIntent: (declare: (stack: Stack) => void) => IntentSet;
5
+ export declare const defineStack: (declare: (stack: Stack) => void, zone?: string) => DesiredStateGraph;
6
+ export type { App, AppTeamGrant, Backing, Cache, Cloudflare, Database, Deployment, GitHub, Have, Host, Repo, Service, Stack, Team, User, Want, WantAppInput, WantServiceInput, WantTeamInput, } from "./handles.js";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEzD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAK1C,eAAO,MAAM,YAAY,GAAI,SAAS,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,KAAG,SAI9D,CAAC;AAIF,eAAO,MAAM,WAAW,GAAI,SAAS,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,EAAE,OAAO,MAAM,KAAG,iBAA8D,CAAC;AAE5I,YAAY,EACR,GAAG,EACH,YAAY,EACZ,OAAO,EACP,KAAK,EACL,UAAU,EACV,QAAQ,EACR,UAAU,EACV,MAAM,EACN,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,OAAO,EACP,KAAK,EACL,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,YAAY,EACZ,gBAAgB,EAChB,aAAa,GAChB,MAAM,cAAc,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,9 @@
1
+ import { resolveState } from "@intentic/state-resolver";
2
+ import { createStack } from "./stack.js";
3
+ export const defineIntent = (declare) => {
4
+ const { stack, intent } = createStack();
5
+ declare(stack);
6
+ return intent;
7
+ };
8
+ export const defineStack = (declare, zone) => resolveState(defineIntent(declare), zone);
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAIzC,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,OAA+B,EAAa,EAAE;IACvE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;IACxC,OAAO,CAAC,KAAK,CAAC,CAAC;IACf,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC;AAIF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,OAA+B,EAAE,IAAa,EAAqB,EAAE,CAAC,YAAY,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { IntentSet } from "@intentic/need-resolver";
2
+ import type { Stack } from "./handles.js";
3
+ export declare const createStack: () => {
4
+ stack: Stack;
5
+ intent: IntentSet;
6
+ };
7
+ //# sourceMappingURL=stack.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stack.d.ts","sourceRoot":"","sources":["../src/stack.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAeR,SAAS,EAMZ,MAAM,yBAAyB,CAAC;AAEjC,OAAO,KAAK,EAcR,KAAK,EAQR,MAAM,cAAc,CAAC;AAMtB,eAAO,MAAM,WAAW,QAAO;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,SAAS,CAAA;CA2M/D,CAAC"}
package/dist/stack.js ADDED
@@ -0,0 +1,172 @@
1
+ import { makeRef } from "@intentic/graph";
2
+ import { deploymentId, repoId } from "@intentic/state-resolver";
3
+ export const createStack = () => {
4
+ const claimed = new Set();
5
+ const claim = (id) => {
6
+ if (claimed.has(id)) {
7
+ throw new Error(`duplicate resource id: "${id}"`);
8
+ }
9
+ claimed.add(id);
10
+ };
11
+ const users = [];
12
+ const teams = [];
13
+ const apps = [];
14
+ const services = [];
15
+ const workspaces = [];
16
+ const backings = [];
17
+ const hosts = [];
18
+ const backingCapabilities = new Map();
19
+ const intent = { hosts, users, teams, apps, services, workspaces, backings };
20
+ const host = (id, input) => {
21
+ claim(id);
22
+ hosts.push({ id, input });
23
+ return Object.freeze({ ...makeRef(id), internalIp: makeRef(id, "internalIp"), publicIp: makeRef(id, "publicIp") });
24
+ };
25
+ const cloudflare = (id, input) => {
26
+ if (intent.cloudflare !== undefined) {
27
+ throw new Error("a Cloudflare account is already declared; intentic supports a single Cloudflare account");
28
+ }
29
+ claim(id);
30
+ intent.cloudflare = { id, input };
31
+ return Object.freeze({ ...makeRef(id), zoneId: makeRef(id, "zoneId"), accountId: makeRef(id, "accountId") });
32
+ };
33
+ const backup = (id, input) => {
34
+ if (intent.backup !== undefined) {
35
+ throw new Error("a backup is already declared; intentic supports a single backup destination");
36
+ }
37
+ claim(id);
38
+ intent.backup = { id, input };
39
+ return Object.freeze(makeRef(id));
40
+ };
41
+ const github = (id, input) => {
42
+ if (intent.github !== undefined) {
43
+ throw new Error("a GitHub account is already declared; intentic supports a single GitHub account");
44
+ }
45
+ claim(id);
46
+ intent.github = { id, input };
47
+ return Object.freeze({ ...makeRef(id), owner: makeRef(id, "owner") });
48
+ };
49
+ const discord = (id, input) => {
50
+ if (intent.discord !== undefined) {
51
+ throw new Error("a Discord account is already declared; intentic supports a single Discord account");
52
+ }
53
+ claim(id);
54
+ intent.discord = { id, input };
55
+ return Object.freeze(makeRef(id));
56
+ };
57
+ const app = (id, input) => {
58
+ claim(id);
59
+ apps.push({
60
+ id,
61
+ on: input.on.resourceId,
62
+ expose: input.expose.resourceId,
63
+ ...(input.notify !== undefined ? { notify: input.notify.resourceId } : {}),
64
+ ...(input.observe !== undefined ? { observe: input.observe.resourceId } : {}),
65
+ ...(input.use !== undefined
66
+ ? { use: input.use.map((handle) => ({ capability: capabilityOf(handle.resourceId), target: handle.resourceId })) }
67
+ : {}),
68
+ ...(input.teams !== undefined ? { teams: input.teams.map((grant) => ({ team: grant.team.resourceId, role: grant.role })) } : {}),
69
+ environments: input.environments,
70
+ });
71
+ const environments = {};
72
+ for (const name of Object.keys(input.environments)) {
73
+ const did = deploymentId(id, name);
74
+ environments[name] = Object.freeze({
75
+ ...makeRef(did),
76
+ internalUrl: makeRef(did, "internalUrl"),
77
+ url: makeRef(did, "url"),
78
+ });
79
+ }
80
+ const rid = repoId(id);
81
+ const repo = Object.freeze({ ...makeRef(rid), cloneUrl: makeRef(rid, "cloneUrl"), sshUrl: makeRef(rid, "sshUrl") });
82
+ return Object.freeze({ ...makeRef(id), repo, environments: Object.freeze(environments) });
83
+ };
84
+ const service = (id, input) => {
85
+ claim(id);
86
+ services.push({ id, kind: input.kind, on: input.on.resourceId, expose: input.expose.resourceId, domain: input.domain });
87
+ return Object.freeze({
88
+ ...makeRef(id),
89
+ url: makeRef(id, "url"),
90
+ internalUrl: makeRef(id, "internalUrl"),
91
+ otlpEndpoint: makeRef(id, "otlpEndpoint"),
92
+ });
93
+ };
94
+ const workspace = (id, input) => {
95
+ claim(id);
96
+ workspaces.push({
97
+ id,
98
+ on: input.on.resourceId,
99
+ expose: input.expose.resourceId,
100
+ ...(input.platformUrl !== undefined ? { platformUrl: input.platformUrl } : {}),
101
+ ...(input.agentBaseUrl !== undefined ? { agentBaseUrl: input.agentBaseUrl } : {}),
102
+ });
103
+ return Object.freeze({
104
+ ...makeRef(id),
105
+ internalUrl: makeRef(id, "internalUrl"),
106
+ healthUrl: makeRef(id, "healthUrl"),
107
+ previewBase: makeRef(id, "previewBase"),
108
+ });
109
+ };
110
+ const capabilityOf = (backingId) => {
111
+ const capability = backingCapabilities.get(backingId);
112
+ if (capability === undefined) {
113
+ throw new Error(`app uses backing "${backingId}" that was not declared with i.want.database/cache/auth/objectStorage`);
114
+ }
115
+ return capability;
116
+ };
117
+ const database = (id, input) => {
118
+ claim(id);
119
+ backings.push({ id, capability: "database", on: input.on.resourceId });
120
+ backingCapabilities.set(id, "database");
121
+ return Object.freeze({ ...makeRef(id), internalHost: makeRef(id, "internalHost"), port: makeRef(id, "port") });
122
+ };
123
+ const cache = (id, input) => {
124
+ claim(id);
125
+ backings.push({ id, capability: "cache", on: input.on.resourceId });
126
+ backingCapabilities.set(id, "cache");
127
+ return Object.freeze({ ...makeRef(id), internalHost: makeRef(id, "internalHost"), port: makeRef(id, "port") });
128
+ };
129
+ const auth = (id, input) => {
130
+ claim(id);
131
+ backings.push({ id, capability: "auth", on: input.on.resourceId, expose: input.expose.resourceId, domain: input.domain });
132
+ backingCapabilities.set(id, "auth");
133
+ return Object.freeze({
134
+ ...makeRef(id),
135
+ url: makeRef(id, "url"),
136
+ issuerUrl: makeRef(id, "issuerUrl"),
137
+ internalUrl: makeRef(id, "internalUrl"),
138
+ });
139
+ };
140
+ const objectStorage = (id, input) => {
141
+ claim(id);
142
+ backings.push({
143
+ id,
144
+ capability: "object-storage",
145
+ on: input.on.resourceId,
146
+ ...(input.expose !== undefined ? { expose: input.expose.resourceId } : {}),
147
+ ...(input.domain !== undefined ? { domain: input.domain } : {}),
148
+ });
149
+ backingCapabilities.set(id, "object-storage");
150
+ return Object.freeze({
151
+ ...makeRef(id),
152
+ endpoint: makeRef(id, "endpoint"),
153
+ internalEndpoint: makeRef(id, "internalEndpoint"),
154
+ });
155
+ };
156
+ const user = (id, input) => {
157
+ claim(id);
158
+ users.push({ id, input });
159
+ return Object.freeze(makeRef(id));
160
+ };
161
+ const team = (id, input) => {
162
+ claim(id);
163
+ teams.push({ id, input: { members: input.members.map((member) => member.resourceId), komodo: input.komodo } });
164
+ return Object.freeze(makeRef(id));
165
+ };
166
+ const stack = {
167
+ have: { host, cloudflare, github, backup, discord },
168
+ want: { app, service, workspace, database, cache, auth, objectStorage, user, team },
169
+ };
170
+ return { stack, intent };
171
+ };
172
+ //# sourceMappingURL=stack.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stack.js","sourceRoot":"","sources":["../src/stack.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAuB1C,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AA6BhE,MAAM,CAAC,MAAM,WAAW,GAAG,GAAwC,EAAE;IACjE,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,MAAM,KAAK,GAAG,CAAC,EAAU,EAAQ,EAAE;QAC/B,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,2BAA2B,EAAE,GAAG,CAAC,CAAC;QACtD,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACpB,CAAC,CAAC;IAEF,MAAM,KAAK,GAAiB,EAAE,CAAC;IAC/B,MAAM,KAAK,GAAiB,EAAE,CAAC;IAC/B,MAAM,IAAI,GAAgB,EAAE,CAAC;IAC7B,MAAM,QAAQ,GAAoB,EAAE,CAAC;IACrC,MAAM,UAAU,GAAsB,EAAE,CAAC;IACzC,MAAM,QAAQ,GAAoB,EAAE,CAAC;IACrC,MAAM,KAAK,GAAiB,EAAE,CAAC;IAG/B,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAA6B,CAAC;IACjE,MAAM,MAAM,GAYR,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;IAElE,MAAM,IAAI,GAAG,CAAC,EAAU,EAAE,KAAgB,EAAQ,EAAE;QAChD,KAAK,CAAC,EAAE,CAAC,CAAC;QACV,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAC1B,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,OAAO,CAAS,EAAE,EAAE,YAAY,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAS,EAAE,EAAE,UAAU,CAAC,EAAE,CAAS,CAAC;IAC/I,CAAC,CAAC;IAEF,MAAM,UAAU,GAAG,CAAC,EAAU,EAAE,KAAsB,EAAc,EAAE;QAClE,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,yFAAyF,CAAC,CAAC;QAC/G,CAAC;QACD,KAAK,CAAC,EAAE,CAAC,CAAC;QACV,MAAM,CAAC,UAAU,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;QAClC,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,CAAS,EAAE,EAAE,QAAQ,CAAC,EAAE,SAAS,EAAE,OAAO,CAAS,EAAE,EAAE,WAAW,CAAC,EAAE,CAAe,CAAC;IAC/I,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,CAAC,EAAU,EAAE,KAAkB,EAAU,EAAE;QACtD,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,6EAA6E,CAAC,CAAC;QACnG,CAAC;QACD,KAAK,CAAC,EAAE,CAAC,CAAC;QACV,MAAM,CAAC,MAAM,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;QAC9B,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAW,CAAC;IAChD,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,CAAC,EAAU,EAAE,KAAkB,EAAU,EAAE;QACtD,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,iFAAiF,CAAC,CAAC;QACvG,CAAC;QACD,KAAK,CAAC,EAAE,CAAC,CAAC;QACV,MAAM,CAAC,MAAM,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;QAC9B,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,CAAS,EAAE,EAAE,OAAO,CAAC,EAAE,CAAW,CAAC;IAC5F,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,CAAC,EAAU,EAAE,KAAmB,EAAW,EAAE;QACzD,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,mFAAmF,CAAC,CAAC;QACzG,CAAC;QACD,KAAK,CAAC,EAAE,CAAC,CAAC;QACV,MAAM,CAAC,OAAO,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;QAC/B,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAY,CAAC;IACjD,CAAC,CAAC;IAEF,MAAM,GAAG,GAAG,CAAmD,EAAU,EAAE,KAAyC,EAAyB,EAAE;QAC3I,KAAK,CAAC,EAAE,CAAC,CAAC;QACV,IAAI,CAAC,IAAI,CAAC;YACN,EAAE;YACF,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,UAAU;YACvB,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,UAAU;YAC/B,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1E,GAAG,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7E,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK,SAAS;gBACvB,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE;gBAClH,CAAC,CAAC,EAAE,CAAC;YACT,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAChI,YAAY,EAAE,KAAK,CAAC,YAAY;SACnC,CAAC,CAAC;QAEH,MAAM,YAAY,GAA+B,EAAE,CAAC;QACpD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC;YACjD,MAAM,GAAG,GAAG,YAAY,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;YACnC,YAAY,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;gBAC/B,GAAG,OAAO,CAAC,GAAG,CAAC;gBACf,WAAW,EAAE,OAAO,CAAS,GAAG,EAAE,aAAa,CAAC;gBAChD,GAAG,EAAE,OAAO,CAAS,GAAG,EAAE,KAAK,CAAC;aACnC,CAAe,CAAC;QACrB,CAAC;QAED,MAAM,GAAG,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;QACvB,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAS,GAAG,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,OAAO,CAAS,GAAG,EAAE,QAAQ,CAAC,EAAE,CAAS,CAAC;QAC5I,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAA0B,CAAC;IACvH,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,CAAC,EAAU,EAAE,KAAuB,EAAW,EAAE;QAC7D,KAAK,CAAC,EAAE,CAAC,CAAC;QACV,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QACxH,OAAO,MAAM,CAAC,MAAM,CAAC;YACjB,GAAG,OAAO,CAAC,EAAE,CAAC;YACd,GAAG,EAAE,OAAO,CAAS,EAAE,EAAE,KAAK,CAAC;YAC/B,WAAW,EAAE,OAAO,CAAS,EAAE,EAAE,aAAa,CAAC;YAC/C,YAAY,EAAE,OAAO,CAAS,EAAE,EAAE,cAAc,CAAC;SACpD,CAAY,CAAC;IAClB,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,CAAC,EAAU,EAAE,KAAyB,EAAa,EAAE;QACnE,KAAK,CAAC,EAAE,CAAC,CAAC;QACV,UAAU,CAAC,IAAI,CAAC;YACZ,EAAE;YACF,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,UAAU;YACvB,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,UAAU;YAC/B,GAAG,CAAC,KAAK,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9E,GAAG,CAAC,KAAK,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACpF,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,MAAM,CAAC;YACjB,GAAG,OAAO,CAAC,EAAE,CAAC;YACd,WAAW,EAAE,OAAO,CAAS,EAAE,EAAE,aAAa,CAAC;YAC/C,SAAS,EAAE,OAAO,CAAS,EAAE,EAAE,WAAW,CAAC;YAC3C,WAAW,EAAE,OAAO,CAAS,EAAE,EAAE,aAAa,CAAC;SAClD,CAAc,CAAC;IACpB,CAAC,CAAC;IAIF,MAAM,YAAY,GAAG,CAAC,SAAiB,EAAqB,EAAE;QAC1D,MAAM,UAAU,GAAG,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACtD,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,qBAAqB,SAAS,uEAAuE,CAAC,CAAC;QAC3H,CAAC;QACD,OAAO,UAAU,CAAC;IACtB,CAAC,CAAC;IAEF,MAAM,QAAQ,GAAG,CAAC,EAAU,EAAE,KAAmB,EAAY,EAAE;QAC3D,KAAK,CAAC,EAAE,CAAC,CAAC;QACV,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC;QACvE,mBAAmB,CAAC,GAAG,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;QACxC,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC,EAAE,YAAY,EAAE,OAAO,CAAS,EAAE,EAAE,cAAc,CAAC,EAAE,IAAI,EAAE,OAAO,CAAS,EAAE,EAAE,MAAM,CAAC,EAAE,CAAa,CAAC;IAC/I,CAAC,CAAC;IAEF,MAAM,KAAK,GAAG,CAAC,EAAU,EAAE,KAAmB,EAAS,EAAE;QACrD,KAAK,CAAC,EAAE,CAAC,CAAC;QACV,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC;QACpE,mBAAmB,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QACrC,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC,EAAE,YAAY,EAAE,OAAO,CAAS,EAAE,EAAE,cAAc,CAAC,EAAE,IAAI,EAAE,OAAO,CAAS,EAAE,EAAE,MAAM,CAAC,EAAE,CAAU,CAAC;IAC5I,CAAC,CAAC;IAEF,MAAM,IAAI,GAAG,CAAC,EAAU,EAAE,KAAuD,EAAQ,EAAE;QACvF,KAAK,CAAC,EAAE,CAAC,CAAC;QACV,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QAC1H,mBAAmB,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QACpC,OAAO,MAAM,CAAC,MAAM,CAAC;YACjB,GAAG,OAAO,CAAC,EAAE,CAAC;YACd,GAAG,EAAE,OAAO,CAAS,EAAE,EAAE,KAAK,CAAC;YAC/B,SAAS,EAAE,OAAO,CAAS,EAAE,EAAE,WAAW,CAAC;YAC3C,WAAW,EAAE,OAAO,CAAS,EAAE,EAAE,aAAa,CAAC;SAClD,CAAS,CAAC;IACf,CAAC,CAAC;IAEF,MAAM,aAAa,GAAG,CAAC,EAAU,EAAE,KAAyD,EAAiB,EAAE;QAC3G,KAAK,CAAC,EAAE,CAAC,CAAC;QACV,QAAQ,CAAC,IAAI,CAAC;YACV,EAAE;YACF,UAAU,EAAE,gBAAgB;YAC5B,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,UAAU;YACvB,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1E,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAClE,CAAC,CAAC;QACH,mBAAmB,CAAC,GAAG,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAC;QAC9C,OAAO,MAAM,CAAC,MAAM,CAAC;YACjB,GAAG,OAAO,CAAC,EAAE,CAAC;YACd,QAAQ,EAAE,OAAO,CAAS,EAAE,EAAE,UAAU,CAAC;YACzC,gBAAgB,EAAE,OAAO,CAAS,EAAE,EAAE,kBAAkB,CAAC;SAC5D,CAAkB,CAAC;IACxB,CAAC,CAAC;IAEF,MAAM,IAAI,GAAG,CAAC,EAAU,EAAE,KAAgB,EAAQ,EAAE;QAChD,KAAK,CAAC,EAAE,CAAC,CAAC;QACV,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAC1B,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAS,CAAC;IAC9C,CAAC,CAAC;IAEF,MAAM,IAAI,GAAG,CAAC,EAAU,EAAE,KAAoB,EAAQ,EAAE;QACpD,KAAK,CAAC,EAAE,CAAC,CAAC;QACV,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAC/G,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAS,CAAC;IAC9C,CAAC,CAAC;IAEF,MAAM,KAAK,GAAU;QACjB,IAAI,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;QACnD,IAAI,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE;KACtF,CAAC;IACF,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AAC7B,CAAC,CAAC"}
package/package.json ADDED
@@ -0,0 +1,50 @@
1
+ {
2
+ "name": "@intentic/sdk",
3
+ "version": "1.18.0",
4
+ "description": "",
5
+ "license": "MIT",
6
+ "type": "module",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "git+https://github.com/radarsu/intentic.git",
10
+ "directory": "_libs/sdk"
11
+ },
12
+ "files": [
13
+ "dist"
14
+ ],
15
+ "publishConfig": {
16
+ "access": "public",
17
+ "registry": "https://registry.npmjs.org/"
18
+ },
19
+ "exports": {
20
+ ".": {
21
+ "types": "./dist/index.d.ts",
22
+ "import": {
23
+ "@intentic/src": "./src/index.ts",
24
+ "default": "./dist/index.js"
25
+ },
26
+ "require": {
27
+ "@intentic/src": "./src/index.ts",
28
+ "default": "./dist/index.js"
29
+ }
30
+ }
31
+ },
32
+ "dependencies": {
33
+ "tslib": "2.8.1",
34
+ "@intentic/graph": "1.18.0",
35
+ "@intentic/need-resolver": "1.18.0",
36
+ "@intentic/resources": "1.18.0",
37
+ "@intentic/state-resolver": "1.18.0"
38
+ },
39
+ "devDependencies": {
40
+ "typescript": "5.9.3",
41
+ "vitest": "4.1.9",
42
+ "@intentic/tsconfig": "0.0.0"
43
+ },
44
+ "scripts": {
45
+ "build": "tsc",
46
+ "watch": "tsc --build --watch",
47
+ "test": "vitest run",
48
+ "test:watch": "vitest"
49
+ }
50
+ }