@knpkv/alchemy-console 0.4.1 → 0.5.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.
Files changed (60) hide show
  1. package/README.md +67 -15
  2. package/dist/api.d.ts +87 -16
  3. package/dist/api.d.ts.map +1 -1
  4. package/dist/api.js +7 -0
  5. package/dist/api.js.map +1 -1
  6. package/dist/client/assets/{index-CHwWf6VU.css → index-D5bP19PT.css} +1 -1
  7. package/dist/client/assets/index-D9T2ytki.js +58 -0
  8. package/dist/client/index.html +2 -2
  9. package/dist/main.js +2 -1
  10. package/dist/main.js.map +1 -1
  11. package/dist/plan.d.ts +109 -0
  12. package/dist/plan.d.ts.map +1 -0
  13. package/dist/plan.js +40 -0
  14. package/dist/plan.js.map +1 -0
  15. package/dist/presentation/PlanView.d.ts +10 -0
  16. package/dist/presentation/PlanView.d.ts.map +1 -0
  17. package/dist/presentation/PlanView.js +70 -0
  18. package/dist/presentation/PlanView.js.map +1 -0
  19. package/dist/presentation/StackDetailView.d.ts +4 -1
  20. package/dist/presentation/StackDetailView.d.ts.map +1 -1
  21. package/dist/presentation/StackDetailView.js +9 -3
  22. package/dist/presentation/StackDetailView.js.map +1 -1
  23. package/dist/presentation/detail-model.d.ts +1 -1
  24. package/dist/presentation/detail-model.d.ts.map +1 -1
  25. package/dist/server/Catalog.d.ts +1 -0
  26. package/dist/server/Catalog.d.ts.map +1 -1
  27. package/dist/server/Catalog.js +7 -1
  28. package/dist/server/Catalog.js.map +1 -1
  29. package/dist/server/HttpApplication.d.ts +2 -1
  30. package/dist/server/HttpApplication.d.ts.map +1 -1
  31. package/dist/server/HttpApplication.js +3 -1
  32. package/dist/server/HttpApplication.js.map +1 -1
  33. package/dist/server/Launch.d.ts +1 -1
  34. package/dist/server/Launch.d.ts.map +1 -1
  35. package/dist/server/PlanReader.d.ts +19 -0
  36. package/dist/server/PlanReader.d.ts.map +1 -0
  37. package/dist/server/PlanReader.js +201 -0
  38. package/dist/server/PlanReader.js.map +1 -0
  39. package/dist/server/Server.d.ts +1 -1
  40. package/dist/server/Server.d.ts.map +1 -1
  41. package/dist/server/plan/archive.d.ts +10 -0
  42. package/dist/server/plan/archive.d.ts.map +1 -0
  43. package/dist/server/plan/archive.js +62 -0
  44. package/dist/server/plan/archive.js.map +1 -0
  45. package/dist/server/plan/github.d.ts +105 -0
  46. package/dist/server/plan/github.d.ts.map +1 -0
  47. package/dist/server/plan/github.js +155 -0
  48. package/dist/server/plan/github.js.map +1 -0
  49. package/dist/server/plan/receipt.d.ts +152 -0
  50. package/dist/server/plan/receipt.d.ts.map +1 -0
  51. package/dist/server/plan/receipt.js +111 -0
  52. package/dist/server/plan/receipt.js.map +1 -0
  53. package/dist/views/index.js +547 -264
  54. package/dist/views/style.css +1 -1
  55. package/dist/views.d.ts +3 -0
  56. package/dist/views.d.ts.map +1 -1
  57. package/dist/views.js +1 -0
  58. package/dist/views.js.map +1 -1
  59. package/package.json +3 -3
  60. package/dist/client/assets/index-C5EGKyzJ.js +0 -58
@@ -7,8 +7,8 @@
7
7
  <meta charset="utf-8" />
8
8
  <meta name="viewport" content="width=device-width, initial-scale=1" />
9
9
  <title>Stacks | Alchemy console</title>
10
- <script type="module" crossorigin src="/assets/index-C5EGKyzJ.js"></script>
11
- <link rel="stylesheet" crossorigin href="/assets/index-CHwWf6VU.css">
10
+ <script type="module" crossorigin src="/assets/index-D9T2ytki.js"></script>
11
+ <link rel="stylesheet" crossorigin href="/assets/index-D5bP19PT.css">
12
12
  </head>
13
13
  <body>
14
14
  <div id="root"><p>Signing in…</p></div>
package/dist/main.js CHANGED
@@ -10,6 +10,7 @@ import process from "node:process";
10
10
  import { Catalog } from "./server/Catalog.js";
11
11
  import { loadConfig, Port, readPackageVersion, StartupError } from "./server/Config.js";
12
12
  import { runConsole } from "./server/Launch.js";
13
+ import { configuredPlanLayer } from "./server/PlanReader.js";
13
14
  import { sourceLayer } from "./server/Sources.js";
14
15
  import { ssoCredentialsLayer } from "./sso-credentials.js";
15
16
  const home = homedir();
@@ -33,7 +34,7 @@ const login = Command.make("login", flags, ({ noOpen, port }) => run(port, noOpe
33
34
  const serve = Command.make("serve", flags, ({ noOpen, port }) => run(port, noOpen, true));
34
35
  const command = Command.make("alchemy-console", flags, ({ noOpen, port }) => run(port, noOpen, false)).pipe(Command.withDescription("Read-only Alchemy stack API on loopback"), Command.withSubcommands([login, serve]));
35
36
  const sources = Layer.unwrap(loadConfig(home).pipe(Effect.mapError(() => new StartupError({ reason: "config" })), Effect.map(sourceLayer))).pipe(Layer.provide(FetchHttpClient.layer), Layer.provide(ssoCredentialsLayer()));
36
- const services = Layer.merge(Catalog.layer.pipe(Layer.provide(sources)), BrowserOpener.layer).pipe(Layer.provideMerge(NodeServices.layer));
37
+ const services = Layer.mergeAll(Catalog.layer.pipe(Layer.provide(sources)), BrowserOpener.layer, configuredPlanLayer.pipe(Layer.provide(FetchHttpClient.layer))).pipe(Layer.provideMerge(NodeServices.layer));
37
38
  const cli = readPackageVersion().pipe(Effect.flatMap((version) => Command.run(command, { version })));
38
39
  NodeRuntime.runMain(cli.pipe(Effect.withTracerEnabled(false), Effect.provide(services)));
39
40
  //# sourceMappingURL=main.js.map
package/dist/main.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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"}
package/dist/plan.d.ts ADDED
@@ -0,0 +1,109 @@
1
+ /** CI publication metadata and property names cross only the authenticated owner API. No provider values or artifact locators. */
2
+ import { Schema } from "effect";
3
+ export declare const PlanSource: Schema.Struct<{
4
+ readonly pr: Schema.NullOr<Schema.Int>;
5
+ readonly head: Schema.String;
6
+ readonly base: Schema.NullOr<Schema.String>;
7
+ readonly publishedAt: Schema.String;
8
+ readonly ageDays: Schema.Int;
9
+ readonly runHref: Schema.String;
10
+ }>;
11
+ export type PlanSource = typeof PlanSource.Type;
12
+ export declare const PlanRow: Schema.Struct<{
13
+ readonly fqn: Schema.NonEmptyString;
14
+ readonly resourceType: Schema.NonEmptyString;
15
+ readonly action: Schema.Literals<readonly ["noop", "update"]>;
16
+ readonly changedKeys: Schema.$Array<Schema.String>;
17
+ }>;
18
+ export type PlanRow = typeof PlanRow.Type;
19
+ export declare const PublishedPlan: Schema.Struct<{
20
+ readonly source: Schema.Struct<{
21
+ readonly pr: Schema.NullOr<Schema.Int>;
22
+ readonly head: Schema.String;
23
+ readonly base: Schema.NullOr<Schema.String>;
24
+ readonly publishedAt: Schema.String;
25
+ readonly ageDays: Schema.Int;
26
+ readonly runHref: Schema.String;
27
+ }>;
28
+ readonly digest: Schema.String;
29
+ readonly rows: Schema.$Array<Schema.Struct<{
30
+ readonly fqn: Schema.NonEmptyString;
31
+ readonly resourceType: Schema.NonEmptyString;
32
+ readonly action: Schema.Literals<readonly ["noop", "update"]>;
33
+ readonly changedKeys: Schema.$Array<Schema.String>;
34
+ }>>;
35
+ readonly stale: Schema.NullOr<Schema.Literals<readonly ["age", "base", "failed"]>>;
36
+ }>;
37
+ export type PublishedPlan = typeof PublishedPlan.Type;
38
+ export declare const PlanState: Schema.TaggedUnion<{
39
+ readonly Expired: Schema.TaggedStruct<"Expired", {
40
+ readonly source: Schema.NullOr<Schema.Struct<{
41
+ readonly pr: Schema.NullOr<Schema.Int>;
42
+ readonly head: Schema.String;
43
+ readonly base: Schema.NullOr<Schema.String>;
44
+ readonly publishedAt: Schema.String;
45
+ readonly ageDays: Schema.Int;
46
+ readonly runHref: Schema.String;
47
+ }>>;
48
+ }>;
49
+ readonly Failed: Schema.TaggedStruct<"Failed", {
50
+ readonly runHref: Schema.String;
51
+ readonly lastPublished: Schema.NullOr<Schema.Struct<{
52
+ readonly source: Schema.Struct<{
53
+ readonly pr: Schema.NullOr<Schema.Int>;
54
+ readonly head: Schema.String;
55
+ readonly base: Schema.NullOr<Schema.String>;
56
+ readonly publishedAt: Schema.String;
57
+ readonly ageDays: Schema.Int;
58
+ readonly runHref: Schema.String;
59
+ }>;
60
+ readonly digest: Schema.String;
61
+ readonly rows: Schema.$Array<Schema.Struct<{
62
+ readonly fqn: Schema.NonEmptyString;
63
+ readonly resourceType: Schema.NonEmptyString;
64
+ readonly action: Schema.Literals<readonly ["noop", "update"]>;
65
+ readonly changedKeys: Schema.$Array<Schema.String>;
66
+ }>>;
67
+ readonly stale: Schema.NullOr<Schema.Literals<readonly ["age", "base", "failed"]>>;
68
+ }>>;
69
+ }>;
70
+ readonly Loading: Schema.TaggedStruct<"Loading", {}>;
71
+ readonly NotConnected: Schema.TaggedStruct<"NotConnected", {}>;
72
+ readonly NotPublished: Schema.TaggedStruct<"NotPublished", {}>;
73
+ readonly NotPublishing: Schema.TaggedStruct<"NotPublishing", {}>;
74
+ readonly Ready: Schema.TaggedStruct<"Ready", {
75
+ readonly plan: Schema.Struct<{
76
+ readonly source: Schema.Struct<{
77
+ readonly pr: Schema.NullOr<Schema.Int>;
78
+ readonly head: Schema.String;
79
+ readonly base: Schema.NullOr<Schema.String>;
80
+ readonly publishedAt: Schema.String;
81
+ readonly ageDays: Schema.Int;
82
+ readonly runHref: Schema.String;
83
+ }>;
84
+ readonly digest: Schema.String;
85
+ readonly rows: Schema.$Array<Schema.Struct<{
86
+ readonly fqn: Schema.NonEmptyString;
87
+ readonly resourceType: Schema.NonEmptyString;
88
+ readonly action: Schema.Literals<readonly ["noop", "update"]>;
89
+ readonly changedKeys: Schema.$Array<Schema.String>;
90
+ }>>;
91
+ readonly stale: Schema.NullOr<Schema.Literals<readonly ["age", "base", "failed"]>>;
92
+ }>;
93
+ }>;
94
+ readonly Refused: Schema.TaggedStruct<"Refused", {}>;
95
+ readonly Unreachable: Schema.TaggedStruct<"Unreachable", {}>;
96
+ readonly Unverified: Schema.TaggedStruct<"Unverified", {
97
+ readonly reason: Schema.Literals<readonly ["metadata", "provenance", "archive", "digest", "receipt"]>;
98
+ readonly source: Schema.NullOr<Schema.Struct<{
99
+ readonly pr: Schema.NullOr<Schema.Int>;
100
+ readonly head: Schema.String;
101
+ readonly base: Schema.NullOr<Schema.String>;
102
+ readonly publishedAt: Schema.String;
103
+ readonly ageDays: Schema.Int;
104
+ readonly runHref: Schema.String;
105
+ }>>;
106
+ }>;
107
+ }>;
108
+ export type PlanState = typeof PlanState.Type;
109
+ //# sourceMappingURL=plan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../src/plan.ts"],"names":[],"mappings":"AAAA,kIAAkI;AAClI,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAM/B,eAAO,MAAM,UAAU;;;;;;;EAOrB,CAAA;AACF,MAAM,MAAM,UAAU,GAAG,OAAO,UAAU,CAAC,IAAI,CAAA;AAC/C,eAAO,MAAM,OAAO;;;;;EAOlB,CAAA;AACF,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AACzC,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;EAKxB,CAAA;AACF,MAAM,MAAM,aAAa,GAAG,OAAO,aAAa,CAAC,IAAI,CAAA;AAErD,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAcpB,CAAA;AACF,MAAM,MAAM,SAAS,GAAG,OAAO,SAAS,CAAC,IAAI,CAAA"}
package/dist/plan.js ADDED
@@ -0,0 +1,40 @@
1
+ /** CI publication metadata and property names cross only the authenticated owner API. No provider values or artifact locators. */
2
+ import { Schema } from "effect";
3
+ const ShortSha = Schema.String.check(Schema.isPattern(/^[a-f0-9]{7}$/));
4
+ const RunHref = Schema.String.check(Schema.isPattern(/^https:\/\/github\.com\/knpkv\/infra\/actions\/runs\/[1-9][0-9]*$/));
5
+ export const PlanSource = Schema.Struct({
6
+ pr: Schema.NullOr(Schema.Int.check(Schema.isGreaterThan(0))),
7
+ head: ShortSha,
8
+ base: Schema.NullOr(ShortSha),
9
+ publishedAt: Schema.String,
10
+ ageDays: Schema.Int.check(Schema.isGreaterThanOrEqualTo(0)),
11
+ runHref: RunHref
12
+ });
13
+ export const PlanRow = Schema.Struct({
14
+ fqn: Schema.NonEmptyString.check(Schema.isMaxLength(1024)),
15
+ resourceType: Schema.NonEmptyString.check(Schema.isMaxLength(256)),
16
+ action: Schema.Literals(["noop", "update"]),
17
+ changedKeys: Schema.Array(Schema.String.check(Schema.isPattern(/^[A-Za-z][A-Za-z0-9_.-]{0,63}$/))).check(Schema.isMaxLength(32))
18
+ });
19
+ export const PublishedPlan = Schema.Struct({
20
+ source: PlanSource,
21
+ digest: Schema.String.check(Schema.isPattern(/^[a-f0-9]{4}…[a-f0-9]{4}$/)),
22
+ rows: Schema.Array(PlanRow).check(Schema.isMaxLength(6)),
23
+ stale: Schema.NullOr(Schema.Literals(["age", "base", "failed"]))
24
+ });
25
+ export const PlanState = Schema.TaggedUnion({
26
+ Loading: {},
27
+ Ready: { plan: PublishedPlan },
28
+ NotPublished: {},
29
+ NotPublishing: {},
30
+ NotConnected: {},
31
+ Expired: { source: Schema.NullOr(PlanSource) },
32
+ Failed: { runHref: RunHref, lastPublished: Schema.NullOr(PublishedPlan) },
33
+ Unverified: {
34
+ reason: Schema.Literals(["metadata", "provenance", "archive", "digest", "receipt"]),
35
+ source: Schema.NullOr(PlanSource)
36
+ },
37
+ Unreachable: {},
38
+ Refused: {}
39
+ });
40
+ //# sourceMappingURL=plan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan.js","sourceRoot":"","sources":["../src/plan.ts"],"names":[],"mappings":"AAAA,kIAAkI;AAClI,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/B,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,CAAA;AACvE,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CACjC,MAAM,CAAC,SAAS,CAAC,mEAAmE,CAAC,CACtF,CAAA;AACD,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC;IACtC,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5D,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;IAC7B,WAAW,EAAE,MAAM,CAAC,MAAM;IAC1B,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;IAC3D,OAAO,EAAE,OAAO;CACjB,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;IACnC,GAAG,EAAE,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAC1D,YAAY,EAAE,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAClE,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC3C,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,gCAAgC,CAAC,CAAC,CAAC,CAAC,KAAK,CACtG,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CACvB;CACF,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC;IACzC,MAAM,EAAE,UAAU;IAClB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,2BAA2B,CAAC,CAAC;IAC1E,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IACxD,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;CACjE,CAAC,CAAA;AAGF,MAAM,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC;IAC1C,OAAO,EAAE,EAAE;IACX,KAAK,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE;IAC9B,YAAY,EAAE,EAAE;IAChB,aAAa,EAAE,EAAE;IACjB,YAAY,EAAE,EAAE;IAChB,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE;IAC9C,MAAM,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE;IACzE,UAAU,EAAE;QACV,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,UAAU,EAAE,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;QACnF,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC;KAClC;IACD,WAAW,EAAE,EAAE;IACf,OAAO,EAAE,EAAE;CACZ,CAAC,CAAA"}
@@ -0,0 +1,10 @@
1
+ import { type ReactElement } from "react";
2
+ import type { PlanState } from "../plan.js";
3
+ export interface PlanViewProps {
4
+ readonly state: PlanState;
5
+ /** Re-read CI only. The mounting application never starts a plan through this callback. */
6
+ readonly onReadAgain: () => void;
7
+ }
8
+ /** Controlled CI publication display. Invalid and unavailable states have no resource rows; Retry is a read callback only. */
9
+ export declare const PlanView: ({ onReadAgain, state }: PlanViewProps) => ReactElement;
10
+ //# sourceMappingURL=PlanView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlanView.d.ts","sourceRoot":"","sources":["../../src/presentation/PlanView.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAS,KAAK,YAAY,EAAE,MAAM,OAAO,CAAA;AAChD,OAAO,KAAK,EAAc,SAAS,EAAiB,MAAM,YAAY,CAAA;AAEtE,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAA;IACzB,2FAA2F;IAC3F,QAAQ,CAAC,WAAW,EAAE,MAAM,IAAI,CAAA;CACjC;AA4KD,8HAA8H;AAC9H,eAAO,MAAM,QAAQ,2BAA4B,aAAa,KAAG,YAgEhE,CAAA"}
@@ -0,0 +1,70 @@
1
+ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Button, Skeleton, StateLabel, Text } from "@knpkv/rly/primitives";
3
+ import { DateTime, Option, Schema } from "effect";
4
+ import { useId } from "react";
5
+ const RunLink = ({ href }) => (_jsxs("a", { className: "ac-detail-link ac-plan-run", href: href, target: "_blank", rel: "noopener noreferrer", "aria-label": "View run on GitHub, opens in a new tab", children: ["View run on GitHub ", _jsx("span", { "aria-hidden": "true", children: "\u2197" })] }));
6
+ const publishedLabel = (source, expired) => {
7
+ if (expired)
8
+ return `${source.ageDays} days ago`;
9
+ const parsed = Option.getOrNull(Schema.decodeUnknownOption(Schema.DateTimeUtcFromString)(source.publishedAt));
10
+ if (parsed === null)
11
+ return "Unknown";
12
+ const time = DateTime.format(parsed, {
13
+ hour: "2-digit",
14
+ minute: "2-digit",
15
+ hourCycle: "h23",
16
+ timeZone: "UTC",
17
+ locale: "en-GB"
18
+ });
19
+ return source.ageDays === 0
20
+ ? `${time} today`
21
+ : `${DateTime.format(parsed, { day: "numeric", month: "short", timeZone: "UTC", locale: "en-GB" })} · ${time}`;
22
+ };
23
+ const SourceLine = ({ expired = false, showBase = true, source }) => (_jsxs("p", { className: "ac-plan-source", children: [source.pr === null ? null : _jsxs("span", { children: ["PR #", source.pr] }), _jsxs("span", { children: ["\u00B7 head ", source.head] }), showBase && source.base !== null ? _jsxs("span", { children: ["\u00B7 base ", source.base] }) : null, showBase || expired ? _jsxs("span", { children: ["\u00B7 published ", publishedLabel(source, expired)] }) : null] }));
24
+ const MobileLabel = ({ children }) => (_jsx("small", { className: "ac-plan-mobile-label", "aria-hidden": "true", children: children }));
25
+ const Published = ({ plan, title }) => {
26
+ const heading = useId();
27
+ const updates = plan.rows.filter((row) => row.action === "update").length;
28
+ const unchanged = plan.rows.length - updates;
29
+ return (_jsxs(_Fragment, { children: [_jsxs("div", { className: "ac-plan-heading", children: [_jsx(Text, { as: "h2", id: heading, className: "ac-plan-title", children: title }), _jsxs("div", { className: "ac-plan-source-row", children: [_jsx(SourceLine, { source: plan.source }), _jsx(RunLink, { href: plan.source.runHref })] }), _jsx("small", { className: "ac-plan-assurance", children: "Published by CI. Plan data was produced by the pull request\u2019s code; this console doesn\u2019t run it." })] }), plan.stale === null ? null : (_jsxs("div", { className: "ac-plan-notice", role: "note", children: [_jsx("b", { children: "This plan may be out of date" }), _jsx("span", { className: "ac-plan-reason", children: plan.stale === "base"
30
+ ? "Its base doesn’t match the latest main commit CI has seen."
31
+ : plan.stale === "failed"
32
+ ? "A newer plan run failed."
33
+ : `Published ${plan.source.ageDays} ${plan.source.ageDays === 1 ? "day" : "days"} ago.` })] })), _jsx("div", { className: "ac-plan-summary", children: updates === 0
34
+ ? "No changes in this plan."
35
+ : `${updates} ${updates === 1 ? "update" : "updates"} · ${unchanged} unchanged` }), _jsxs("table", { role: "table", className: "ac-plan-table", "aria-labelledby": heading, children: [_jsx("thead", { role: "rowgroup", children: _jsxs("tr", { role: "row", children: [_jsx("th", { role: "columnheader", scope: "col", children: "Resource" }), _jsx("th", { role: "columnheader", scope: "col", children: "Type" }), _jsx("th", { role: "columnheader", scope: "col", children: "Change" }), _jsx("th", { role: "columnheader", scope: "col", children: "Changed properties" })] }) }), _jsx("tbody", { role: "rowgroup", children: plan.rows.map((row) => (_jsxs("tr", { role: "row", children: [_jsxs("th", { role: "rowheader", scope: "row", children: [_jsx(MobileLabel, { children: "Resource" }), _jsx("b", { className: "ac-plan-resource", children: row.fqn })] }), _jsxs("td", { role: "cell", children: [_jsx(MobileLabel, { children: "Type" }), _jsx("span", { className: "ac-plan-type", title: row.resourceType, children: row.resourceType })] }), _jsxs("td", { role: "cell", children: [_jsx(MobileLabel, { children: "Change" }), _jsx("span", { children: _jsx(StateLabel, { label: row.action === "update" ? "Update" : "No change", tone: row.action === "update" ? "caution" : "neutral", size: "compact" }) })] }), _jsxs("td", { role: "cell", children: [_jsx(MobileLabel, { children: "Changed properties" }), row.changedKeys.length === 0 ? (_jsx("span", { className: "ac-plan-muted", "aria-label": "None", children: "\u2014" })) : (_jsx("span", { className: "ac-plan-keys", children: row.changedKeys.map((key, index) => (_jsx("code", { children: key }, `${key}-${index}`))) }))] })] }, row.fqn))) })] }), _jsxs("footer", { className: "ac-plan-footer", children: [_jsx("span", { children: "CI publishes property names only; values aren\u2019t shown." }), _jsxs("span", { className: "ac-plan-digest", children: ["Digest ", plan.digest] })] })] }));
36
+ };
37
+ const emptyCopy = {
38
+ NotPublished: [
39
+ "No CI plan for this stack yet.",
40
+ "A plan appears here after CI plans a pull request that touches this stack."
41
+ ],
42
+ NotPublishing: [
43
+ "CI isn’t publishing plans right now.",
44
+ "Plans resume here once infrastructure CI publishes them again."
45
+ ],
46
+ NotConnected: [
47
+ "CI plans aren’t connected for this stack.",
48
+ "Plans can be shown for stacks that infrastructure CI plans. Set up CI plan reading to see them here."
49
+ ],
50
+ Expired: [
51
+ "The latest CI plan has expired.",
52
+ "CI keeps plans for 14 days. A new one appears after the next pull request plan."
53
+ ],
54
+ Unverified: ["This CI plan couldn’t be verified, so it isn’t shown.", "Its contents didn’t match what CI recorded."],
55
+ Unreachable: ["Couldn’t reach CI to read plans.", "No plan is shown until CI can be read."],
56
+ Refused: ["CI refused access to plans.", "Ask whoever manages this console’s CI access."]
57
+ };
58
+ /** Controlled CI publication display. Invalid and unavailable states have no resource rows; Retry is a read callback only. */
59
+ export const PlanView = ({ onReadAgain, state }) => {
60
+ if (state._tag === "Ready")
61
+ return (_jsx("section", { className: "ac-plan", "aria-label": "Latest CI plan", children: _jsx(Published, { plan: state.plan, title: "Latest CI plan" }) }));
62
+ if (state._tag === "Loading")
63
+ return (_jsxs("section", { className: "ac-plan", "aria-label": "Latest CI plan", "aria-busy": "true", children: [_jsxs("div", { className: "ac-plan-loading-heading", children: [_jsx(Text, { as: "h2", className: "ac-plan-title", children: "Latest CI plan" }), _jsx(Skeleton, { variant: "text", width: "18rem", decorative: true }), _jsx(Skeleton, { variant: "text", width: "10rem", decorative: true })] }), _jsx("p", { role: "status", className: "ac-plan-loading-copy", children: "Reading the latest CI plan\u2026" }), _jsx("div", { className: "ac-plan-skeletons", children: [1, 2, 3, 4].map((key) => (_jsx(Skeleton, { variant: "block", height: "3.5rem", decorative: true }, key))) })] }));
64
+ if (state._tag === "Failed")
65
+ return (_jsxs("section", { className: "ac-plan", "aria-label": "Latest CI plan", children: [_jsx(Text, { as: "h2", className: "ac-plan-title", children: "Latest CI plan" }), _jsxs("div", { className: "ac-plan-notice ac-plan-failed", role: "status", children: [_jsx(StateLabel, { label: "Failed", tone: "critical", size: "compact" }), _jsx("b", { children: "The latest CI plan run failed." }), _jsx(RunLink, { href: state.runHref })] }), state.lastPublished === null ? null : _jsx(Published, { plan: state.lastPublished, title: "Last published plan" })] }));
66
+ const [title, description] = emptyCopy[state._tag];
67
+ const source = state._tag === "Expired" || state._tag === "Unverified" ? state.source : null;
68
+ return (_jsxs("section", { className: "ac-plan", "aria-label": "Latest CI plan", children: [_jsx(Text, { as: "h2", className: "ac-plan-title", children: "Latest CI plan" }), _jsxs("div", { className: "ac-plan-empty", role: "status", children: [_jsx("h3", { children: title }), _jsx("p", { children: description }), source === null ? null : _jsx(SourceLine, { source: source, expired: state._tag === "Expired", showBase: false }), state._tag === "Unverified" && source !== null ? _jsx(RunLink, { href: source.runHref }) : null, state._tag === "Unreachable" ? (_jsxs(_Fragment, { children: [_jsx(Button, { variant: "secondary", onClick: onReadAgain, children: "Retry" }), _jsx("small", { children: "Retry reads again. It never runs a plan." })] })) : null] })] }));
69
+ };
70
+ //# sourceMappingURL=PlanView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlanView.js","sourceRoot":"","sources":["../../src/presentation/PlanView.tsx"],"names":[],"mappings":"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"}
@@ -1,8 +1,11 @@
1
1
  import { type ReactElement } from "react";
2
+ import type { PlanState } from "../plan.js";
2
3
  import type { StackListCopy } from "./StackListView.js";
3
4
  import type { ResourcePresentation, StackDetailState, StackTab } from "./detail-model.js";
4
5
  export interface StackDetailViewProps {
5
6
  readonly state: StackDetailState;
7
+ readonly planState?: PlanState;
8
+ readonly onReadPlanAgain?: () => void;
6
9
  readonly copy: StackListCopy;
7
10
  readonly tab: StackTab;
8
11
  readonly onTabChange: (tab: StackTab) => void;
@@ -11,5 +14,5 @@ export interface StackDetailViewProps {
11
14
  readonly resourceHref: (resource: ResourcePresentation) => string;
12
15
  }
13
16
  /** Controlled read-only module. The caller owns reads, owner identity, navigation and output safety proof. */
14
- export declare const StackDetailView: ({ copy, onReadAgain, onTabChange, resourceHref, state, tab }: StackDetailViewProps) => ReactElement;
17
+ export declare const StackDetailView: ({ copy, onReadAgain, onReadPlanAgain, onTabChange, planState, resourceHref, state, tab }: StackDetailViewProps) => ReactElement;
15
18
  //# sourceMappingURL=StackDetailView.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"StackDetailView.d.ts","sourceRoot":"","sources":["../../src/presentation/StackDetailView.tsx"],"names":[],"mappings":"AACA,OAAO,EAAS,KAAK,YAAY,EAAE,MAAM,OAAO,CAAA;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACvD,OAAO,KAAK,EAAE,oBAAoB,EAAE,gBAAgB,EAAqB,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAI5G,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,KAAK,EAAE,gBAAgB,CAAA;IAChC,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAA;IAC5B,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAA;IACtB,QAAQ,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,QAAQ,KAAK,IAAI,CAAA;IAC7C,QAAQ,CAAC,WAAW,EAAE,MAAM,IAAI,CAAA;IAChC,4GAA4G;IAC5G,QAAQ,CAAC,YAAY,EAAE,CAAC,QAAQ,EAAE,oBAAoB,KAAK,MAAM,CAAA;CAClE;AAqJD,8GAA8G;AAC9G,eAAO,MAAM,eAAe,iEAOzB,oBAAoB,KAAG,YAmEzB,CAAA"}
1
+ {"version":3,"file":"StackDetailView.d.ts","sourceRoot":"","sources":["../../src/presentation/StackDetailView.tsx"],"names":[],"mappings":"AACA,OAAO,EAAS,KAAK,YAAY,EAAE,MAAM,OAAO,CAAA;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAE3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACvD,OAAO,KAAK,EAAE,oBAAoB,EAAE,gBAAgB,EAAqB,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAI5G,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,KAAK,EAAE,gBAAgB,CAAA;IAChC,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAA;IAC9B,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,IAAI,CAAA;IACrC,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAA;IAC5B,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAA;IACtB,QAAQ,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,QAAQ,KAAK,IAAI,CAAA;IAC7C,QAAQ,CAAC,WAAW,EAAE,MAAM,IAAI,CAAA;IAChC,4GAA4G;IAC5G,QAAQ,CAAC,YAAY,EAAE,CAAC,QAAQ,EAAE,oBAAoB,KAAK,MAAM,CAAA;CAClE;AAqJD,8GAA8G;AAC9G,eAAO,MAAM,eAAe,6FASzB,oBAAoB,KAAG,YAwEzB,CAAA"}
@@ -1,6 +1,7 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { Tabs, Text } from "@knpkv/rly/primitives";
3
3
  import { useId } from "react";
4
+ import { PlanView } from "./PlanView.js";
4
5
  import { DetailBoundary, DetailPanel, Missing, ProviderLink, RecordedTime, ResourceStatus } from "./detail-parts.js";
5
6
  import { ResourceTree } from "./ResourceTree.js";
6
7
  const Label = ({ children }) => (_jsx("span", { className: "ac-detail-mobile-label", "aria-hidden": "true", children: children }));
@@ -16,12 +17,12 @@ const Outputs = ({ outputs }) => {
16
17
  return (_jsxs("section", { className: "ac-detail-section", "aria-labelledby": headingId, children: [_jsxs("div", { className: "ac-detail-section-heading", children: [_jsx(Text, { as: "h2", variant: "section-title", id: headingId, children: "Outputs" }), outputs !== null && outputs.length > 0 ? (_jsxs(Text, { variant: "meta", tone: "secondary", children: [outputs.length, " ", outputs.length === 1 ? "output" : "outputs", " \u00B7 ", hidden, " hidden"] })) : null] }), outputs === null ? (_jsx(DetailPanel, { title: "Not available yet", unavailable: true, children: "The outputs in this stack\u2019s state can\u2019t be read yet." })) : outputs.length === 0 ? (_jsx(DetailPanel, { title: "This stack has no outputs." })) : (_jsx("div", { className: "ac-detail-table-wrap", children: _jsxs("table", { className: "ac-detail-table ac-output-table", "aria-labelledby": headingId, children: [_jsx("thead", { children: _jsxs("tr", { children: [_jsx("th", { scope: "col", children: "Key" }), _jsx("th", { scope: "col", children: "Value" }), _jsx("th", { scope: "col", children: "Description" })] }) }), _jsx("tbody", { children: outputs.map((output) => (_jsxs("tr", { children: [_jsxs("th", { scope: "row", children: [_jsx(Label, { children: "Key" }), _jsx("span", { className: "ac-output-key", children: output.key })] }), _jsxs("td", { children: [_jsx(Label, { children: "Value" }), output.value._tag === "Hidden" ? (_jsx("span", { className: "ac-detail-muted", children: "Hidden" })) : (_jsx("span", { className: "ac-output-value", children: output.value.text }))] }), _jsxs("td", { className: "ac-detail-muted", children: [_jsx(Label, { children: "Description" }), output.description ?? _jsx(Missing, {})] })] }, output.key))) })] }) }))] }));
17
18
  };
18
19
  /** Controlled read-only module. The caller owns reads, owner identity, navigation and output safety proof. */
19
- export const StackDetailView = ({ copy, onReadAgain, onTabChange, resourceHref, state, tab }) => {
20
+ export const StackDetailView = ({ copy, onReadAgain, onReadPlanAgain, onTabChange, planState = { _tag: "NotConnected" }, resourceHref, state, tab }) => {
20
21
  if (state._tag !== "Ready")
21
22
  return (_jsx("div", { className: "ac-detail", children: _jsx(DetailBoundary, { state: state, copy: copy, onReadAgain: onReadAgain }) }));
22
23
  const stack = state.stack;
23
- return (_jsxs("div", { className: "ac-detail", children: [_jsxs("header", { className: "ac-detail-header", children: [_jsxs("div", { className: "ac-detail-title-row", children: [_jsx(Text, { as: "h1", variant: "page-title", className: "ac-title", children: stack.app }), _jsx("span", { className: "ac-stage-badge", children: stack.stage })] }), _jsx(Text, { as: "p", tone: "secondary", className: "ac-description", children: "Infrastructure state. Read-only." })] }), _jsxs("dl", { className: "ac-stack-metadata", children: [_jsxs("div", { children: [_jsx("dt", { children: "Region" }), _jsx("dd", { children: "Unknown" })] }), _jsxs("div", { children: [_jsx("dt", { children: "Backend" }), _jsx("dd", { children: stack.backend === "s3" ? "State bucket" : "Local" })] }), _jsxs("div", { children: [_jsx("dt", { children: "Alchemy version" }), _jsx("dd", { className: "ac-resource-id", children: stack.alchemyVersion ?? "Unknown" })] }), _jsxs("div", { children: [_jsx("dt", { children: "Last deploy" }), _jsx("dd", { children: stack.lastDeploy === null ? "Unknown" : _jsx(RecordedTime, { value: stack.lastDeploy }) })] })] }), _jsx(Tabs, { className: "ac-detail-tabs", "aria-label": "Stack state", size: "large", value: tab, "data-mobile-layout": "single-row", onValueChange: (value) => {
24
- if (value === "resources" || value === "outputs" || value === "state")
24
+ return (_jsxs("div", { className: "ac-detail", "data-plan": tab === "plan" ? "true" : undefined, children: [_jsxs("header", { className: "ac-detail-header", children: [_jsxs("div", { className: "ac-detail-title-row", children: [_jsx(Text, { as: "h1", variant: "page-title", className: "ac-title", children: stack.app }), _jsx("span", { className: "ac-stage-badge", children: stack.stage })] }), _jsx(Text, { as: "p", tone: "secondary", className: "ac-description", children: "Infrastructure state. Read-only." })] }), _jsxs("dl", { className: "ac-stack-metadata", children: [_jsxs("div", { children: [_jsx("dt", { children: "Region" }), _jsx("dd", { children: "Unknown" })] }), _jsxs("div", { children: [_jsx("dt", { children: "Backend" }), _jsx("dd", { children: stack.backend === "s3" ? "State bucket" : "Local" })] }), _jsxs("div", { children: [_jsx("dt", { children: "Alchemy version" }), _jsx("dd", { className: "ac-resource-id", children: stack.alchemyVersion ?? "Unknown" })] }), _jsxs("div", { children: [_jsx("dt", { children: "Last deploy" }), _jsx("dd", { children: stack.lastDeploy === null ? "Unknown" : _jsx(RecordedTime, { value: stack.lastDeploy }) })] })] }), _jsx(Tabs, { className: "ac-detail-tabs", "aria-label": "Stack state", size: "large", value: tab, "data-mobile-layout": "single-row", onValueChange: (value) => {
25
+ if (value === "resources" || value === "outputs" || value === "state" || value === "plan")
25
26
  onTabChange(value);
26
27
  }, items: [
27
28
  { value: "resources", label: "Resources", content: _jsx(Resources, { stack: stack, resourceHref: resourceHref }) },
@@ -30,6 +31,11 @@ export const StackDetailView = ({ copy, onReadAgain, onTabChange, resourceHref,
30
31
  value: "state",
31
32
  label: "State",
32
33
  content: (_jsx(ResourceTree, { app: stack.app, stage: stack.stage, resources: stack.resources, resourceHref: resourceHref }))
34
+ },
35
+ {
36
+ value: "plan",
37
+ label: "Plan",
38
+ content: _jsx(PlanView, { state: planState, onReadAgain: onReadPlanAgain ?? onReadAgain })
33
39
  }
34
40
  ] })] }));
35
41
  };
@@ -1 +1 @@
1
- {"version":3,"file":"StackDetailView.js","sourceRoot":"","sources":["../../src/presentation/StackDetailView.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"StackDetailView.js","sourceRoot":"","sources":["../../src/presentation/StackDetailView.tsx"],"names":[],"mappings":"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"}
@@ -21,7 +21,7 @@ export interface StackPresentation extends Omit<StackState, "resources" | "outpu
21
21
  readonly resources: ReadonlyArray<ResourcePresentation>;
22
22
  readonly outputs: ReadonlyArray<OutputPresentation> | null;
23
23
  }
24
- export type StackTab = "resources" | "outputs" | "state";
24
+ export type StackTab = "resources" | "outputs" | "state" | "plan";
25
25
  /** Refresh and navigation replace the whole state, so a failed read cannot retain the previous stack. */
26
26
  export type StackDetailState = {
27
27
  readonly _tag: "Loading";
@@ -1 +1 @@
1
- {"version":3,"file":"detail-model.d.ts","sourceRoot":"","sources":["../../src/presentation/detail-model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAA;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAE/D,2HAA2H;AAC3H,MAAM,WAAW,oBAAqB,SAAQ,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC;IAC3E,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC,QAAQ,CAAC,GAAG,QAAQ,GAAG,IAAI,CAAA;CAC7D;AAED,0HAA0H;AAC1H,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;KAAE,GAAG;QAC5C,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;QACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;QACrB,QAAQ,CAAC,KAAK,EAAE,wBAAwB,CAAA;KACzC,CAAA;IACD,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;CACpC;AAED,wHAAwH;AACxH,MAAM,WAAW,iBAAkB,SAAQ,IAAI,CAAC,UAAU,EAAE,WAAW,GAAG,SAAS,CAAC;IAClF,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC,oBAAoB,CAAC,CAAA;IACvD,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,kBAAkB,CAAC,GAAG,IAAI,CAAA;CAC3D;AAED,MAAM,MAAM,QAAQ,GAAG,WAAW,GAAG,SAAS,GAAG,OAAO,CAAA;AAExD,yGAAyG;AACzG,MAAM,MAAM,gBAAgB,GACxB;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;CAAE,GAC5B;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAA;CAAE,GAC7D;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;CAAE,GAC7B;IAAE,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,CAAA;CAAE,GAC3E;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,mBAAmB,CAAC,IAAI,GAAG,WAAW,GAAG,WAAW,CAAA;CAAE,CAAA"}
1
+ {"version":3,"file":"detail-model.d.ts","sourceRoot":"","sources":["../../src/presentation/detail-model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAA;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAE/D,2HAA2H;AAC3H,MAAM,WAAW,oBAAqB,SAAQ,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC;IAC3E,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC,QAAQ,CAAC,GAAG,QAAQ,GAAG,IAAI,CAAA;CAC7D;AAED,0HAA0H;AAC1H,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;KAAE,GAAG;QAC5C,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;QACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;QACrB,QAAQ,CAAC,KAAK,EAAE,wBAAwB,CAAA;KACzC,CAAA;IACD,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;CACpC;AAED,wHAAwH;AACxH,MAAM,WAAW,iBAAkB,SAAQ,IAAI,CAAC,UAAU,EAAE,WAAW,GAAG,SAAS,CAAC;IAClF,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC,oBAAoB,CAAC,CAAA;IACvD,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,kBAAkB,CAAC,GAAG,IAAI,CAAA;CAC3D;AAED,MAAM,MAAM,QAAQ,GAAG,WAAW,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,CAAA;AAEjE,yGAAyG;AACzG,MAAM,MAAM,gBAAgB,GACxB;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;CAAE,GAC5B;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAA;CAAE,GAC7D;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;CAAE,GAC7B;IAAE,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,CAAA;CAAE,GAC3E;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,mBAAmB,CAAC,IAAI,GAAG,WAAW,GAAG,WAAW,CAAA;CAAE,CAAA"}
@@ -18,6 +18,7 @@ export declare class StackSource extends StackSource_base {
18
18
  }
19
19
  declare const Catalog_base: Context.ServiceClass<Catalog, "@knpkv/alchemy-console/Catalog", {
20
20
  readonly list: Effect.Effect<StackList, CatalogReadError>;
21
+ readonly identify: (id: StackId) => Effect.Effect<Omit<StackSummary, "id">, StackNotFound>;
21
22
  readonly get: (id: StackId) => Effect.Effect<StackDetail, StackNotFound | CatalogReadError>;
22
23
  }>;
23
24
  export declare class Catalog extends Catalog_base {
@@ -1 +1 @@
1
- {"version":3,"file":"Catalog.d.ts","sourceRoot":"","sources":["../../src/server/Catalog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAA0B,MAAM,QAAQ,CAAA;AAC/E,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AACzE,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAChF,OAAO,EAA4C,KAAK,UAAU,EAAE,MAAM,cAAc,CAAA;AAExF,8GAA8G;AAC9G,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAA;IAC1C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAA;CAC3D;;uBAGoB,MAAM,CAAC,MAAM,CAAC;QAC/B,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,eAAe,CAAC,CAAA;QAC/C,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,cAAc,CAAC,CAAA;KAC/C,EAAE,gBAAgB,CAAC;;AAJtB,qBAAa,WAAY,SAAQ,gBAKS;CAAG;;mBAG5B,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,gBAAgB,CAAC;kBAC3C,CAAC,EAAE,EAAE,OAAO,KAAK,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,aAAa,GAAG,gBAAgB,CAAC;;AAF7F,qBAAa,OAAQ,SAAQ,YAGS;IACpC,MAAM,CAAC,QAAQ,CAAC,KAAK,2DA+EpB;CACF"}
1
+ {"version":3,"file":"Catalog.d.ts","sourceRoot":"","sources":["../../src/server/Catalog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAA0B,MAAM,QAAQ,CAAA;AAC/E,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AACzE,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAChF,OAAO,EAA4C,KAAK,UAAU,EAAE,MAAM,cAAc,CAAA;AAExF,8GAA8G;AAC9G,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAA;IAC1C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAA;CAC3D;;uBAGoB,MAAM,CAAC,MAAM,CAAC;QAC/B,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,eAAe,CAAC,CAAA;QAC/C,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,cAAc,CAAC,CAAA;KAC/C,EAAE,gBAAgB,CAAC;;AAJtB,qBAAa,WAAY,SAAQ,gBAKS;CAAG;;mBAG5B,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,gBAAgB,CAAC;uBACtC,CAAC,EAAE,EAAE,OAAO,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,EAAE,aAAa,CAAC;kBAC5E,CAAC,EAAE,EAAE,OAAO,KAAK,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,aAAa,GAAG,gBAAgB,CAAC;;AAH7F,qBAAa,OAAQ,SAAQ,YAIS;IACpC,MAAM,CAAC,QAAQ,CAAC,KAAK,2DAoFpB;CACF"}
@@ -76,7 +76,13 @@ export class Catalog extends Context.Service()("@knpkv/alchemy-console/Catalog")
76
76
  }
77
77
  };
78
78
  });
79
- return Catalog.of({ list: list(), get });
79
+ const identify = Effect.fn("AlchemyConsole.catalogIdentify")(function* (id) {
80
+ const entry = (yield* Ref.get(entries)).get(id);
81
+ if (entry === undefined)
82
+ return yield* new StackNotFound({});
83
+ return entry.summary;
84
+ });
85
+ return Catalog.of({ list: list(), get, identify });
80
86
  }));
81
87
  }
82
88
  /** Explicit projection prevents a private reader's extra fields from reaching a transport encoder. */
@@ -1 +1 @@
1
- {"version":3,"file":"Catalog.js","sourceRoot":"","sources":["../../src/server/Catalog.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Catalog.js","sourceRoot":"","sources":["../../src/server/Catalog.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@ import * as OwnerSession from "@knpkv/browser-pairing/owner-session";
2
2
  import { Layer } from "effect";
3
3
  import { HttpRouter } from "effect/http";
4
4
  import { Catalog } from "./Catalog.js";
5
+ import { PlanReader } from "./PlanReader.js";
5
6
  /** Listener, source readers and owner session belong to the executable's runtime layer. */
6
- export declare const application: Layer.Layer<never, import("effect/PlatformError").BadArgument | import("effect/PlatformError").PlatformError, Catalog | import("effect/FileSystem").FileSystem | import("effect/http/Etag").Generator | import("effect/http/HttpPlatform").HttpPlatform | HttpRouter.HttpRouter | OwnerSession.OwnerSession | import("effect/Path").Path | HttpRouter.Request<"Error", import("effect/http/HttpBody").HttpBodyError>>;
7
+ export declare const application: Layer.Layer<never, import("effect/PlatformError").BadArgument | import("effect/PlatformError").PlatformError, Catalog | import("effect/FileSystem").FileSystem | import("effect/http/Etag").Generator | import("effect/http/HttpPlatform").HttpPlatform | HttpRouter.HttpRouter | OwnerSession.OwnerSession | import("effect/Path").Path | PlanReader | HttpRouter.Request<"Error", import("effect/http/HttpBody").HttpBodyError>>;
7
8
  //# sourceMappingURL=HttpApplication.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"HttpApplication.d.ts","sourceRoot":"","sources":["../../src/server/HttpApplication.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,YAAY,MAAM,sCAAsC,CAAA;AACpE,OAAO,EAAU,KAAK,EAAE,MAAM,QAAQ,CAAA;AACtC,OAAO,EAAE,UAAU,EAAyC,MAAM,aAAa,CAAA;AAI/E,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AA0CtC,2FAA2F;AAC3F,eAAO,MAAM,WAAW,uZAKvB,CAAA"}
1
+ {"version":3,"file":"HttpApplication.d.ts","sourceRoot":"","sources":["../../src/server/HttpApplication.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,YAAY,MAAM,sCAAsC,CAAA;AACpE,OAAO,EAAU,KAAK,EAAE,MAAM,QAAQ,CAAA;AACtC,OAAO,EAAE,UAAU,EAAyC,MAAM,aAAa,CAAA;AAI/E,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAEtC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AA6C5C,2FAA2F;AAC3F,eAAO,MAAM,WAAW,oaAKvB,CAAA"}
@@ -6,9 +6,11 @@ import { AlchemyConsoleApi } from "../api.js";
6
6
  import { BootstrapRoutes } from "./Bootstrap.js";
7
7
  import { Catalog } from "./Catalog.js";
8
8
  import { ownerAuthLayer } from "./OwnerSession.js";
9
+ import { PlanReader } from "./PlanReader.js";
9
10
  const handlers = HttpApiBuilder.group(AlchemyConsoleApi, "stacks", (handlers) => Effect.gen(function* () {
10
11
  const catalog = yield* Catalog;
11
- return handlers.handle("list", () => catalog.list).handle("get", ({ params }) => catalog.get(params.id));
12
+ const plans = yield* PlanReader;
13
+ return handlers.handle("list", () => catalog.list).handle("get", ({ params }) => catalog.get(params.id)).handle("plan", ({ params }) => catalog.identify(params.id).pipe(Effect.flatMap((stack) => plans.read(stack.app, stack.stage))));
12
14
  }));
13
15
  /** Refuse unsafe/unmatched API requests before handlers; even refusals and missing routes cannot be cached. */
14
16
  const boundary = Layer.unwrap(Effect.gen(function* () {
@@ -1 +1 @@
1
- {"version":3,"file":"HttpApplication.js","sourceRoot":"","sources":["../../src/server/HttpApplication.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"HttpApplication.js","sourceRoot":"","sources":["../../src/server/HttpApplication.ts"],"names":[],"mappings":"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"}
@@ -3,5 +3,5 @@ import { Effect, Stdio } from "effect";
3
3
  import { Catalog } from "./Catalog.js";
4
4
  import { type ControlOptions } from "./ControlSocket.js";
5
5
  /** The launch helper owns printing/opening; the catalog and server lifetime stay with this foreground process. */
6
- export declare const runConsole: (options: ControlOptions, launch: BrowserLaunch, printOnly: boolean) => Effect.Effect<void, import("effect/PlatformError").BadArgument | BrowserLaunchOutputError | import("@knpkv/browser-pairing").BrowserPairingError | import("./ControlSocket.js").ControlError | import("@knpkv/browser-pairing").CredentialCookieError | import("effect/PlatformError").PlatformError | import("effect/http/HttpServerError").ServeError | import("@knpkv/browser-pairing/owner-session").UnsafeLoopbackAddressError, import("@knpkv/browser-pairing/launch").BrowserOpener | Catalog | import("effect/Crypto").Crypto | import("effect/FileSystem").FileSystem | import("effect/Path").Path | Stdio.Stdio>;
6
+ export declare const runConsole: (options: ControlOptions, launch: BrowserLaunch, printOnly: boolean) => Effect.Effect<void, import("effect/PlatformError").BadArgument | BrowserLaunchOutputError | import("@knpkv/browser-pairing").BrowserPairingError | import("./ControlSocket.js").ControlError | import("@knpkv/browser-pairing").CredentialCookieError | import("effect/PlatformError").PlatformError | import("effect/http/HttpServerError").ServeError | import("@knpkv/browser-pairing/owner-session").UnsafeLoopbackAddressError, import("@knpkv/browser-pairing/launch").BrowserOpener | Catalog | import("effect/Crypto").Crypto | import("effect/FileSystem").FileSystem | import("effect/Path").Path | import("./PlanReader.ts").PlanReader | Stdio.Stdio>;
7
7
  //# sourceMappingURL=Launch.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Launch.d.ts","sourceRoot":"","sources":["../../src/server/Launch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAE,wBAAwB,EAAe,MAAM,+BAA+B,CAAA;AAEzG,OAAO,EAAE,MAAM,EAAS,KAAK,EAAU,MAAM,QAAQ,CAAA;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,KAAK,cAAc,EAAmB,MAAM,oBAAoB,CAAA;AAGzE,kHAAkH;AAClH,eAAO,MAAM,UAAU,oqBAqBrB,CAAA"}
1
+ {"version":3,"file":"Launch.d.ts","sourceRoot":"","sources":["../../src/server/Launch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAE,wBAAwB,EAAe,MAAM,+BAA+B,CAAA;AAEzG,OAAO,EAAE,MAAM,EAAS,KAAK,EAAU,MAAM,QAAQ,CAAA;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,KAAK,cAAc,EAAmB,MAAM,oBAAoB,CAAA;AAGzE,kHAAkH;AAClH,eAAO,MAAM,UAAU,2sBAqBrB,CAAA"}