@squadrules/mcp 5.4.2 → 5.5.1

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 (169) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/cli/api-client.d.ts +3 -1
  3. package/dist/cli/api-client.d.ts.map +1 -1
  4. package/dist/cli/api-client.js +7 -16
  5. package/dist/cli/api-client.js.map +1 -1
  6. package/dist/cli/backend/action-backend.d.ts +99 -0
  7. package/dist/cli/backend/action-backend.d.ts.map +1 -0
  8. package/dist/cli/backend/action-backend.js +2 -0
  9. package/dist/cli/backend/action-backend.js.map +1 -0
  10. package/dist/cli/backend/http-backend.d.ts +31 -0
  11. package/dist/cli/backend/http-backend.d.ts.map +1 -0
  12. package/dist/cli/backend/http-backend.js +38 -0
  13. package/dist/cli/backend/http-backend.js.map +1 -0
  14. package/dist/cli/backend/local-backend.d.ts +37 -0
  15. package/dist/cli/backend/local-backend.d.ts.map +1 -0
  16. package/dist/cli/backend/local-backend.js +166 -0
  17. package/dist/cli/backend/local-backend.js.map +1 -0
  18. package/dist/cli/backend/resolve-backend.d.ts +29 -0
  19. package/dist/cli/backend/resolve-backend.d.ts.map +1 -0
  20. package/dist/cli/backend/resolve-backend.js +37 -0
  21. package/dist/cli/backend/resolve-backend.js.map +1 -0
  22. package/dist/cli/client-factory.d.ts +6 -7
  23. package/dist/cli/client-factory.d.ts.map +1 -1
  24. package/dist/cli/client-factory.js +8 -42
  25. package/dist/cli/client-factory.js.map +1 -1
  26. package/dist/cli/commands/{search.d.ts → activate.d.ts} +2 -2
  27. package/dist/cli/commands/activate.d.ts.map +1 -0
  28. package/dist/cli/commands/activate.js +31 -0
  29. package/dist/cli/commands/activate.js.map +1 -0
  30. package/dist/cli/commands/cli-train.d.ts +5 -1
  31. package/dist/cli/commands/cli-train.d.ts.map +1 -1
  32. package/dist/cli/commands/cli-train.js +40 -139
  33. package/dist/cli/commands/cli-train.js.map +1 -1
  34. package/dist/cli/commands/delete.d.ts +1 -1
  35. package/dist/cli/commands/delete.d.ts.map +1 -1
  36. package/dist/cli/commands/delete.js +11 -6
  37. package/dist/cli/commands/delete.js.map +1 -1
  38. package/dist/cli/commands/export.d.ts +12 -5
  39. package/dist/cli/commands/export.d.ts.map +1 -1
  40. package/dist/cli/commands/export.js +117 -55
  41. package/dist/cli/commands/export.js.map +1 -1
  42. package/dist/cli/commands/{begin.d.ts → forward.d.ts} +2 -2
  43. package/dist/cli/commands/forward.d.ts.map +1 -0
  44. package/dist/cli/commands/forward.js +31 -0
  45. package/dist/cli/commands/forward.js.map +1 -0
  46. package/dist/cli/commands/login.d.ts +8 -2
  47. package/dist/cli/commands/login.d.ts.map +1 -1
  48. package/dist/cli/commands/login.js +53 -13
  49. package/dist/cli/commands/login.js.map +1 -1
  50. package/dist/cli/commands/logout.d.ts.map +1 -1
  51. package/dist/cli/commands/logout.js +3 -1
  52. package/dist/cli/commands/logout.js.map +1 -1
  53. package/dist/cli/commands/{attest.d.ts → reward.d.ts} +2 -2
  54. package/dist/cli/commands/reward.d.ts.map +1 -0
  55. package/dist/cli/commands/{attest.js → reward.js} +16 -17
  56. package/dist/cli/commands/reward.js.map +1 -0
  57. package/dist/cli/commands/serve.d.ts.map +1 -1
  58. package/dist/cli/commands/serve.js +3 -0
  59. package/dist/cli/commands/serve.js.map +1 -1
  60. package/dist/cli/commands/spaces.d.ts +2 -2
  61. package/dist/cli/commands/spaces.d.ts.map +1 -1
  62. package/dist/cli/commands/spaces.js +12 -7
  63. package/dist/cli/commands/spaces.js.map +1 -1
  64. package/dist/cli/commands/token.d.ts.map +1 -1
  65. package/dist/cli/commands/token.js +7 -3
  66. package/dist/cli/commands/token.js.map +1 -1
  67. package/dist/cli/commands/tune.d.ts +6 -0
  68. package/dist/cli/commands/tune.d.ts.map +1 -0
  69. package/dist/cli/commands/{update.js → tune.js} +34 -24
  70. package/dist/cli/commands/tune.js.map +1 -0
  71. package/dist/cli/config.d.ts +4 -2
  72. package/dist/cli/config.d.ts.map +1 -1
  73. package/dist/cli/config.js +6 -3
  74. package/dist/cli/config.js.map +1 -1
  75. package/dist/cli/fetch-error.d.ts +6 -0
  76. package/dist/cli/fetch-error.d.ts.map +1 -1
  77. package/dist/cli/fetch-error.js +18 -0
  78. package/dist/cli/fetch-error.js.map +1 -1
  79. package/dist/cli/format.d.ts +20 -0
  80. package/dist/cli/format.d.ts.map +1 -0
  81. package/dist/cli/format.js +18 -0
  82. package/dist/cli/format.js.map +1 -0
  83. package/dist/cli/index.d.ts +1 -1
  84. package/dist/cli/index.d.ts.map +1 -1
  85. package/dist/cli/index.js +3 -0
  86. package/dist/cli/index.js.map +1 -1
  87. package/dist/cli/local-target.d.ts +11 -0
  88. package/dist/cli/local-target.d.ts.map +1 -0
  89. package/dist/cli/local-target.js +14 -0
  90. package/dist/cli/local-target.js.map +1 -0
  91. package/dist/cli/log-sink-prelude.d.ts +2 -0
  92. package/dist/cli/log-sink-prelude.d.ts.map +1 -0
  93. package/dist/cli/log-sink-prelude.js +23 -0
  94. package/dist/cli/log-sink-prelude.js.map +1 -0
  95. package/dist/cli/output.d.ts +20 -3
  96. package/dist/cli/output.d.ts.map +1 -1
  97. package/dist/cli/output.js +14 -6
  98. package/dist/cli/output.js.map +1 -1
  99. package/dist/cli/program.d.ts.map +1 -1
  100. package/dist/cli/program.js +12 -7
  101. package/dist/cli/program.js.map +1 -1
  102. package/dist/cli/render.d.ts +37 -0
  103. package/dist/cli/render.d.ts.map +1 -0
  104. package/dist/cli/render.js +179 -0
  105. package/dist/cli/render.js.map +1 -0
  106. package/dist/cli/resolve-timeout.d.ts +16 -0
  107. package/dist/cli/resolve-timeout.d.ts.map +1 -0
  108. package/dist/cli/resolve-timeout.js +43 -0
  109. package/dist/cli/resolve-timeout.js.map +1 -0
  110. package/dist/cli/skill-zip-local-write.d.ts +6 -4
  111. package/dist/cli/skill-zip-local-write.d.ts.map +1 -1
  112. package/dist/cli/skill-zip-local-write.js +5 -3
  113. package/dist/cli/skill-zip-local-write.js.map +1 -1
  114. package/dist/cli/train-batch.d.ts +20 -0
  115. package/dist/cli/train-batch.d.ts.map +1 -0
  116. package/dist/cli/train-batch.js +168 -0
  117. package/dist/cli/train-batch.js.map +1 -0
  118. package/dist/embed-docs/mem/adapter-migration.md +1 -1
  119. package/dist/embed-docs/mem/bulk-insert-adapters-via-cli.md +1 -1
  120. package/dist/embed-docs/mem/challenge-type-guide.md +1 -1
  121. package/dist/embed-docs/mem/create-new-protocol.md +1 -1
  122. package/dist/embed-docs/mem/critic-loop-guide.md +1 -1
  123. package/dist/embed-docs/mem/critic-loop.md +1 -1
  124. package/dist/embed-docs/mem/phase-critic-guide.md +1 -1
  125. package/dist/embed-docs/mem/phase-critic.md +1 -1
  126. package/dist/embed-docs/mem/protocol-linking-guide.md +1 -1
  127. package/dist/embed-docs/mem/refine-search.md +1 -1
  128. package/dist/embed-docs/mem/skill-format-guide.md +1 -1
  129. package/dist/index.d.ts.map +1 -1
  130. package/dist/index.js +6 -70
  131. package/dist/index.js.map +1 -1
  132. package/dist/resources/embedded-mcp-resources.js +11 -11
  133. package/dist/runtime/boot-local-runtime.d.ts +37 -0
  134. package/dist/runtime/boot-local-runtime.d.ts.map +1 -0
  135. package/dist/runtime/boot-local-runtime.js +122 -0
  136. package/dist/runtime/boot-local-runtime.js.map +1 -0
  137. package/dist/services/embedding/lazy-probe.d.ts +7 -0
  138. package/dist/services/embedding/lazy-probe.d.ts.map +1 -0
  139. package/dist/services/embedding/lazy-probe.js +26 -0
  140. package/dist/services/embedding/lazy-probe.js.map +1 -0
  141. package/dist/ui/assets/{AccountPage-DlzuVTtp.js → AccountPage-DyTJwGMC.js} +1 -1
  142. package/dist/ui/assets/{index-C77BzNbG.js → index-CKityaQ1.js} +2 -2
  143. package/dist/ui/assets/index-Dq6apLxZ.css +2 -0
  144. package/dist/ui/index.html +2 -2
  145. package/dist/utils/log-core.d.ts +7 -0
  146. package/dist/utils/log-core.d.ts.map +1 -1
  147. package/dist/utils/log-core.js +14 -4
  148. package/dist/utils/log-core.js.map +1 -1
  149. package/dist/utils/tenant-context.d.ts +6 -0
  150. package/dist/utils/tenant-context.d.ts.map +1 -1
  151. package/dist/utils/tenant-context.js +6 -1
  152. package/dist/utils/tenant-context.js.map +1 -1
  153. package/package.json +1 -1
  154. package/dist/cli/commands/attest.d.ts.map +0 -1
  155. package/dist/cli/commands/attest.js.map +0 -1
  156. package/dist/cli/commands/begin.d.ts.map +0 -1
  157. package/dist/cli/commands/begin.js +0 -27
  158. package/dist/cli/commands/begin.js.map +0 -1
  159. package/dist/cli/commands/search.d.ts.map +0 -1
  160. package/dist/cli/commands/search.js +0 -25
  161. package/dist/cli/commands/search.js.map +0 -1
  162. package/dist/cli/commands/update.d.ts +0 -6
  163. package/dist/cli/commands/update.d.ts.map +0 -1
  164. package/dist/cli/commands/update.js.map +0 -1
  165. package/dist/cli/format-next-call.d.ts +0 -2
  166. package/dist/cli/format-next-call.d.ts.map +0 -1
  167. package/dist/cli/format-next-call.js +0 -63
  168. package/dist/cli/format-next-call.js.map +0 -1
  169. package/dist/ui/assets/index-CSUUmfdT.css +0 -2
@@ -0,0 +1,122 @@
1
+ /**
2
+ * Shared local runtime boot.
3
+ *
4
+ * Factors the store / embedding / seed boot out of `runSquadrulesServer()` so the
5
+ * HTTP+stdio server and the CLI local backend run the exact same startup sequence
6
+ * and cannot drift. `opts` gates the expensive stages: the Qdrant health probe,
7
+ * the eager embedding-model load, and app-space adapter seeding. The CLI local
8
+ * path turns these down (fastboot); the server turns them all on.
9
+ */
10
+ import { existsSync } from 'node:fs';
11
+ import { join } from 'node:path';
12
+ import { structuredLogger } from '../utils/structured-logger.js';
13
+ import { MemoryQdrantStore } from '../services/memory/store.js';
14
+ import { qdrantService } from '../services/qdrant/index.js';
15
+ import { getEmbeddedRecordStore } from '../services/vector-store/embedded-store-singleton.js';
16
+ import { resolveLanceDbDir } from '../services/vector-store/lancedb-connection.js';
17
+ import { ensureEmbeddingDimension } from '../services/embedding/lazy-probe.js';
18
+ import { injectMemResourcesAtBoot } from '../resources/mem-resources-boot.js';
19
+ import { triggerQdrantSnapshot } from '../services/qdrant/snapshots.js';
20
+ import { MEM_BOOT_FORCE_INJECT } from '../config/mem-boot.js';
21
+ import { isQdrantConfigured, EMBEDDING_PROVIDER, QDRANT_SNAPSHOT_ON_START, QDRANT_SNAPSHOT_DIR } from '../config.js';
22
+ /** LanceDB table name holding adapter/layer/artifact records (see lance-records-engine.ts). */
23
+ const RECORDS_TABLE = 'memory_records';
24
+ /**
25
+ * Cheap file-existence check: has the embedded LanceDB records table been created?
26
+ * True once any host / `serve` run has seeded the store, so a warm CLI run can skip
27
+ * boot injection. Always false on the Qdrant backend (injection version-skips instead).
28
+ */
29
+ export function isEmbeddedStoreSeeded() {
30
+ if (isQdrantConfigured)
31
+ return false;
32
+ return existsSync(join(resolveLanceDbDir(), `${RECORDS_TABLE}.lance`));
33
+ }
34
+ /**
35
+ * Wait for Qdrant to be available with retries. Uses shorter intervals for faster
36
+ * detection when Qdrant becomes available quickly. Embedded store never calls this.
37
+ */
38
+ async function waitForQdrant(memoryStore, maxRetries = 30, intervalMs = 1000) {
39
+ structuredLogger.info('Waiting for Qdrant to be available...');
40
+ for (let attempt = 1; attempt <= maxRetries; attempt++) {
41
+ try {
42
+ const isHealthy = await memoryStore.checkHealth(5000); // 5 second timeout per check
43
+ if (isHealthy) {
44
+ structuredLogger.info(`Qdrant is available after ${attempt} attempt(s)`);
45
+ return;
46
+ }
47
+ }
48
+ catch (err) {
49
+ const errorMessage = err instanceof Error ? err.message : String(err);
50
+ structuredLogger.debug(`Qdrant health check error on attempt ${attempt}: ${errorMessage}`);
51
+ // Health check failed, will retry
52
+ }
53
+ if (attempt < maxRetries) {
54
+ structuredLogger.info(`Qdrant not ready yet (attempt ${attempt}/${maxRetries}), retrying in ${intervalMs}ms...`);
55
+ await new Promise((resolve) => setTimeout(resolve, intervalMs));
56
+ }
57
+ }
58
+ throw new Error(`Qdrant did not become available after ${maxRetries} attempts (${(maxRetries * intervalMs) / 1000}s)`);
59
+ }
60
+ /**
61
+ * Boot the local runtime: select the vector store, optionally probe embeddings and
62
+ * wait for Qdrant, initialize the store, optionally snapshot, and optionally seed
63
+ * app-space adapters. Returns the store double plus the `qdrantService` singleton
64
+ * (the same embedded instance on the LanceDB path) for callers to execute tools against.
65
+ */
66
+ export async function bootLocalRuntime(opts = {}) {
67
+ const seedAdapters = opts.seedAdapters ?? 'always';
68
+ const loadEmbeddings = opts.loadEmbeddings ?? true;
69
+ const healthProbe = opts.healthProbe ?? true;
70
+ const forceSeed = opts.forceSeed ?? MEM_BOOT_FORCE_INJECT;
71
+ // Backend-selected store. On the embedded path this is the shared LanceDB store
72
+ // double-cast to the `MemoryQdrantStore` shape (the same instance `qdrantService`
73
+ // resolves to), so tools and boot injection keep calling the domain methods they use.
74
+ const memoryStore = isQdrantConfigured
75
+ ? new MemoryQdrantStore()
76
+ : getEmbeddedRecordStore();
77
+ // Wait for Qdrant before initializing (the embedded store is local — no server to wait for).
78
+ if (isQdrantConfigured && healthProbe) {
79
+ await waitForQdrant(memoryStore);
80
+ }
81
+ if (loadEmbeddings) {
82
+ const embeddingDim = await ensureEmbeddingDimension();
83
+ structuredLogger.debug(`embedding dimension: ${embeddingDim}`);
84
+ }
85
+ structuredLogger.info(`vector store: ${isQdrantConfigured ? 'Qdrant' : 'LanceDB (embedded)'}`);
86
+ structuredLogger.info(`embedding: ${EMBEDDING_PROVIDER}`);
87
+ await memoryStore.init();
88
+ structuredLogger.debug('vector store: ready');
89
+ if (isQdrantConfigured && QDRANT_SNAPSHOT_ON_START) {
90
+ const snapshotResult = await triggerQdrantSnapshot(qdrantService, {
91
+ enabled: true,
92
+ directory: QDRANT_SNAPSHOT_DIR,
93
+ reason: 'startup'
94
+ });
95
+ if (!snapshotResult.success) {
96
+ structuredLogger.warn(`Startup snapshot failed: ${snapshotResult.message || 'unknown error'}`);
97
+ }
98
+ }
99
+ else {
100
+ structuredLogger.debug('startup snapshot: skipped (embedded store)');
101
+ }
102
+ // Inject mem resources from embedded-mcp-resources into the vector store at boot.
103
+ // Adapters already stored at (or newer than) their shipped version are reused, so a
104
+ // normal restart does no re-embedding; forceSeed is the structural-repair path
105
+ // (delete-then-retrain) for a corrupted/duplicated store.
106
+ const shouldSeed = seedAdapters === 'always' ||
107
+ (seedAdapters === 'auto' && (forceSeed || !isEmbeddedStoreSeeded()));
108
+ if (shouldSeed) {
109
+ // Seeding embeds adapters on a fresh store; load the model even when the caller
110
+ // deferred the eager probe (fastboot). A warm store skips injection entirely.
111
+ if (!loadEmbeddings) {
112
+ const embeddingDim = await ensureEmbeddingDimension();
113
+ structuredLogger.debug(`embedding dimension: ${embeddingDim}`);
114
+ }
115
+ await injectMemResourcesAtBoot(memoryStore, { force: forceSeed });
116
+ }
117
+ else {
118
+ structuredLogger.debug('boot injection: skipped (embedded store already seeded)');
119
+ }
120
+ return { memoryStore, qdrantService };
121
+ }
122
+ //# sourceMappingURL=boot-local-runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"boot-local-runtime.js","sourceRoot":"","sources":["../../src/runtime/boot-local-runtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Resolve and cache the embedding dimension, loading the model on first use.
3
+ * Idempotent: concurrent and repeat callers share a single probe. A failed probe
4
+ * is not cached, so a later call can retry (for example once a provider is up).
5
+ */
6
+ export declare function ensureEmbeddingDimension(): Promise<number>;
7
+ //# sourceMappingURL=lazy-probe.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lazy-probe.d.ts","sourceRoot":"","sources":["../../../src/services/embedding/lazy-probe.ts"],"names":[],"mappings":"AAaA;;;;GAIG;AACH,wBAAgB,wBAAwB,IAAI,OAAO,CAAC,MAAM,CAAC,CAQ1D"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Lazy, memoized embedding-dimension probe.
3
+ *
4
+ * `probeEmbeddingDimension()` loads the embedding model (fastembed ONNX or a
5
+ * remote provider round-trip) and caches the resolved dimension. Server boot
6
+ * calls it eagerly; the CLI local backend defers it until a command actually
7
+ * needs embeddings (activate / train / a fresh seed) so read-only commands stay
8
+ * fast. Memoized here so eager and lazy callers share one model load per process.
9
+ */
10
+ import { probeEmbeddingDimension } from './service.js';
11
+ let inflight = null;
12
+ /**
13
+ * Resolve and cache the embedding dimension, loading the model on first use.
14
+ * Idempotent: concurrent and repeat callers share a single probe. A failed probe
15
+ * is not cached, so a later call can retry (for example once a provider is up).
16
+ */
17
+ export function ensureEmbeddingDimension() {
18
+ if (!inflight) {
19
+ inflight = probeEmbeddingDimension().catch((err) => {
20
+ inflight = null;
21
+ throw err;
22
+ });
23
+ }
24
+ return inflight;
25
+ }
26
+ //# sourceMappingURL=lazy-probe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lazy-probe.js","sourceRoot":"","sources":["../../../src/services/embedding/lazy-probe.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAEvD,IAAI,QAAQ,GAA2B,IAAI,CAAC;AAE5C;;;;GAIG;AACH,MAAM,UAAU,wBAAwB;IACtC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,QAAQ,GAAG,uBAAuB,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACjD,QAAQ,GAAG,IAAI,CAAC;YAChB,MAAM,GAAG,CAAC;QACZ,CAAC,CAAC,CAAC;IACL,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -1 +1 @@
1
- import{g as e,y as t}from"./vendor-xESPQGR9.js";import{t as n}from"./react-BvB9BS1T.js";import{n as r,r as i,t as a}from"./index-C77BzNbG.js";import{t as o}from"./api-BgTb-tmJ.js";async function s(){let e=await o(`/api/me`);if(!e.ok){let t=await e.json().catch(()=>({})),n=Error(t.message??e.statusText);throw n.statusCode=e.status,n}return e.json()}function c(){return e({queryKey:[`me`],queryFn:s,retry:!1})}var l=n(),u={light:`account.themeOptionLight`,dark:`account.themeOptionDark`};function d(e){if(e.name&&e.name.trim().length>0)return e.name;let t=[e.given_name,e.family_name].filter(e=>typeof e==`string`&&e.trim().length>0);return t.length>0?t.join(` `):e.preferred_username&&e.preferred_username.length>0?e.preferred_username:e.sub}function f(){let{t:e}=t(),{data:n,isLoading:o,isError:s}=c(),{preference:f,setPreference:p}=i();return o?(0,l.jsx)(`p`,{className:`text-[var(--color-text-muted)]`,children:e(`account.loading`)}):s||!n?(0,l.jsxs)(`div`,{children:[(0,l.jsx)(`h1`,{className:`text-[var(--color-text-heading)] text-2xl font-semibold mb-4`,children:e(`account.title`)}),(0,l.jsx)(`p`,{className:`text-[var(--color-text-muted)]`,children:e(`account.notSignedIn`)}),(0,l.jsx)(`a`,{href:`/auth/callback`,className:`mt-4 min-h-[44px] min-w-[44px] inline-flex items-center justify-center px-4 py-2 rounded-[var(--radius-md)] font-medium bg-[var(--color-primary)] text-white no-underline hover:bg-[var(--color-primary-hover)] focus-visible:outline focus-visible:outline-2 focus-visible:outline-[var(--color-focus-ring)] focus-visible:outline-offset-2`,children:e(`account.signIn`)})]}):(0,l.jsxs)(`div`,{children:[(0,l.jsx)(`h1`,{className:`text-[var(--color-text-heading)] text-2xl font-semibold mb-6`,children:e(`account.title`)}),(0,l.jsx)(`p`,{className:`text-[var(--color-text-muted)] mb-6`,children:e(`account.intro`)}),(0,l.jsxs)(`div`,{className:`rounded-[var(--radius-md)] border border-[var(--color-border)] bg-[var(--color-surface-elevated)] p-6`,children:[(0,l.jsxs)(`div`,{className:`mb-6 rounded-[var(--radius-md)] border border-[var(--color-border)] bg-[var(--color-surface)] p-4`,children:[(0,l.jsx)(`h2`,{className:`mb-1 text-base font-semibold text-[var(--color-text-heading)]`,children:e(`account.themeTitle`)}),(0,l.jsx)(`p`,{className:`mb-3 text-sm text-[var(--color-text-muted)]`,children:e(`account.themeDescription`)}),(0,l.jsx)(`label`,{htmlFor:`account-theme-preference`,className:`sr-only`,children:e(`account.themePreferenceLabel`)}),(0,l.jsxs)(`select`,{id:`account-theme-preference`,value:f,onChange:e=>{let t=e.target.value;r(t)&&p(t)},className:`min-h-[44px] w-full max-w-xs rounded-[var(--radius-md)] border border-[var(--color-border)] bg-[var(--color-surface)] px-3 py-2 text-[var(--color-text)] focus-visible:outline focus-visible:outline-2 focus-visible:outline-[var(--color-focus-ring)] focus-visible:outline-offset-2`,children:[(0,l.jsx)(`option`,{value:`system`,children:e(`account.themeOptionSystem`)}),a.map(t=>(0,l.jsx)(`option`,{value:t,children:e(u[t])},t))]})]}),(0,l.jsxs)(`div`,{className:`mb-4`,children:[(0,l.jsx)(`span`,{className:`block text-xs uppercase tracking-wider text-[var(--color-text-muted)] mb-1`,children:e(`account.name`)}),(0,l.jsx)(`span`,{className:`text-[var(--color-text-heading)]`,children:d(n)})]}),n.preferred_username&&n.preferred_username!==d(n)&&(0,l.jsxs)(`div`,{className:`mb-4`,children:[(0,l.jsx)(`span`,{className:`block text-xs uppercase tracking-wider text-[var(--color-text-muted)] mb-1`,children:e(`account.username`)}),(0,l.jsx)(`span`,{className:`text-[var(--color-text-heading)]`,children:n.preferred_username})]}),n.email&&(0,l.jsxs)(`div`,{className:`mb-4`,children:[(0,l.jsx)(`span`,{className:`block text-xs uppercase tracking-wider text-[var(--color-text-muted)] mb-1`,children:e(`account.email`)}),(0,l.jsxs)(`span`,{className:`text-[var(--color-text-heading)]`,children:[n.email,n.email_verified===!0?` (${e(`account.emailVerified`)})`:``]})]}),(0,l.jsxs)(`div`,{className:`mb-4`,children:[(0,l.jsx)(`span`,{className:`block text-xs uppercase tracking-wider text-[var(--color-text-muted)] mb-1`,children:e(`account.accountType`)}),(0,l.jsx)(`span`,{className:`text-[var(--color-text-heading)]`,children:n.account_label})]}),(0,l.jsxs)(`div`,{className:`mb-4`,children:[(0,l.jsx)(`span`,{className:`block text-xs uppercase tracking-wider text-[var(--color-text-muted)] mb-1`,children:e(`account.realm`)}),(0,l.jsx)(`span`,{className:`text-[var(--color-text-heading)]`,children:n.realm})]}),n.identity_provider&&(0,l.jsxs)(`div`,{className:`mb-4`,children:[(0,l.jsx)(`span`,{className:`block text-xs uppercase tracking-wider text-[var(--color-text-muted)] mb-1`,children:e(`account.identityProvider`)}),(0,l.jsx)(`span`,{className:`text-[var(--color-text-heading)]`,children:n.identity_provider})]}),n.groups.length>0&&(0,l.jsxs)(`div`,{className:`mb-4`,children:[(0,l.jsx)(`span`,{className:`block text-xs uppercase tracking-wider text-[var(--color-text-muted)] mb-1`,children:e(`account.groups`)}),(0,l.jsx)(`ul`,{className:`list-disc list-inside text-[var(--color-text-heading)] space-y-1`,children:n.groups.map(e=>(0,l.jsx)(`li`,{children:e},e))})]}),(0,l.jsx)(`div`,{className:`mt-6 flex gap-2 flex-wrap`,children:(0,l.jsx)(`a`,{href:`/auth/logout`,className:`min-h-[44px] min-w-[44px] inline-flex items-center justify-center px-4 py-2 rounded-[var(--radius-md)] font-medium border border-[var(--color-border)] text-[var(--color-text)] bg-transparent no-underline hover:bg-[var(--color-surface-elevated)] focus-visible:outline focus-visible:outline-2 focus-visible:outline-[var(--color-focus-ring)] focus-visible:outline-offset-2`,children:e(`account.logOut`)})})]})]})}export{f as AccountPage};
1
+ import{g as e,y as t}from"./vendor-xESPQGR9.js";import{t as n}from"./react-BvB9BS1T.js";import{n as r,r as i,t as a}from"./index-CKityaQ1.js";import{t as o}from"./api-BgTb-tmJ.js";async function s(){let e=await o(`/api/me`);if(!e.ok){let t=await e.json().catch(()=>({})),n=Error(t.message??e.statusText);throw n.statusCode=e.status,n}return e.json()}function c(){return e({queryKey:[`me`],queryFn:s,retry:!1})}var l=n(),u={light:`account.themeOptionLight`,dark:`account.themeOptionDark`};function d(e){if(e.name&&e.name.trim().length>0)return e.name;let t=[e.given_name,e.family_name].filter(e=>typeof e==`string`&&e.trim().length>0);return t.length>0?t.join(` `):e.preferred_username&&e.preferred_username.length>0?e.preferred_username:e.sub}function f(){let{t:e}=t(),{data:n,isLoading:o,isError:s}=c(),{preference:f,setPreference:p}=i();return o?(0,l.jsx)(`p`,{className:`text-[var(--color-text-muted)]`,children:e(`account.loading`)}):s||!n?(0,l.jsxs)(`div`,{children:[(0,l.jsx)(`h1`,{className:`text-[var(--color-text-heading)] text-2xl font-semibold mb-4`,children:e(`account.title`)}),(0,l.jsx)(`p`,{className:`text-[var(--color-text-muted)]`,children:e(`account.notSignedIn`)}),(0,l.jsx)(`a`,{href:`/auth/callback`,className:`mt-4 min-h-[44px] min-w-[44px] inline-flex items-center justify-center px-4 py-2 rounded-[var(--radius-md)] font-medium bg-[var(--color-primary)] text-white no-underline hover:bg-[var(--color-primary-hover)] focus-visible:outline focus-visible:outline-2 focus-visible:outline-[var(--color-focus-ring)] focus-visible:outline-offset-2`,children:e(`account.signIn`)})]}):(0,l.jsxs)(`div`,{children:[(0,l.jsx)(`h1`,{className:`text-[var(--color-text-heading)] text-2xl font-semibold mb-6`,children:e(`account.title`)}),(0,l.jsx)(`p`,{className:`text-[var(--color-text-muted)] mb-6`,children:e(`account.intro`)}),(0,l.jsxs)(`div`,{className:`rounded-[var(--radius-md)] border border-[var(--color-border)] bg-[var(--color-surface-elevated)] p-6`,children:[(0,l.jsxs)(`div`,{className:`mb-6 rounded-[var(--radius-md)] border border-[var(--color-border)] bg-[var(--color-surface)] p-4`,children:[(0,l.jsx)(`h2`,{className:`mb-1 text-base font-semibold text-[var(--color-text-heading)]`,children:e(`account.themeTitle`)}),(0,l.jsx)(`p`,{className:`mb-3 text-sm text-[var(--color-text-muted)]`,children:e(`account.themeDescription`)}),(0,l.jsx)(`label`,{htmlFor:`account-theme-preference`,className:`sr-only`,children:e(`account.themePreferenceLabel`)}),(0,l.jsxs)(`select`,{id:`account-theme-preference`,value:f,onChange:e=>{let t=e.target.value;r(t)&&p(t)},className:`min-h-[44px] w-full max-w-xs rounded-[var(--radius-md)] border border-[var(--color-border)] bg-[var(--color-surface)] px-3 py-2 text-[var(--color-text)] focus-visible:outline focus-visible:outline-2 focus-visible:outline-[var(--color-focus-ring)] focus-visible:outline-offset-2`,children:[(0,l.jsx)(`option`,{value:`system`,children:e(`account.themeOptionSystem`)}),a.map(t=>(0,l.jsx)(`option`,{value:t,children:e(u[t])},t))]})]}),(0,l.jsxs)(`div`,{className:`mb-4`,children:[(0,l.jsx)(`span`,{className:`block text-xs uppercase tracking-wider text-[var(--color-text-muted)] mb-1`,children:e(`account.name`)}),(0,l.jsx)(`span`,{className:`text-[var(--color-text-heading)]`,children:d(n)})]}),n.preferred_username&&n.preferred_username!==d(n)&&(0,l.jsxs)(`div`,{className:`mb-4`,children:[(0,l.jsx)(`span`,{className:`block text-xs uppercase tracking-wider text-[var(--color-text-muted)] mb-1`,children:e(`account.username`)}),(0,l.jsx)(`span`,{className:`text-[var(--color-text-heading)]`,children:n.preferred_username})]}),n.email&&(0,l.jsxs)(`div`,{className:`mb-4`,children:[(0,l.jsx)(`span`,{className:`block text-xs uppercase tracking-wider text-[var(--color-text-muted)] mb-1`,children:e(`account.email`)}),(0,l.jsxs)(`span`,{className:`text-[var(--color-text-heading)]`,children:[n.email,n.email_verified===!0?` (${e(`account.emailVerified`)})`:``]})]}),(0,l.jsxs)(`div`,{className:`mb-4`,children:[(0,l.jsx)(`span`,{className:`block text-xs uppercase tracking-wider text-[var(--color-text-muted)] mb-1`,children:e(`account.accountType`)}),(0,l.jsx)(`span`,{className:`text-[var(--color-text-heading)]`,children:n.account_label})]}),(0,l.jsxs)(`div`,{className:`mb-4`,children:[(0,l.jsx)(`span`,{className:`block text-xs uppercase tracking-wider text-[var(--color-text-muted)] mb-1`,children:e(`account.realm`)}),(0,l.jsx)(`span`,{className:`text-[var(--color-text-heading)]`,children:n.realm})]}),n.identity_provider&&(0,l.jsxs)(`div`,{className:`mb-4`,children:[(0,l.jsx)(`span`,{className:`block text-xs uppercase tracking-wider text-[var(--color-text-muted)] mb-1`,children:e(`account.identityProvider`)}),(0,l.jsx)(`span`,{className:`text-[var(--color-text-heading)]`,children:n.identity_provider})]}),n.groups.length>0&&(0,l.jsxs)(`div`,{className:`mb-4`,children:[(0,l.jsx)(`span`,{className:`block text-xs uppercase tracking-wider text-[var(--color-text-muted)] mb-1`,children:e(`account.groups`)}),(0,l.jsx)(`ul`,{className:`list-disc list-inside text-[var(--color-text-heading)] space-y-1`,children:n.groups.map(e=>(0,l.jsx)(`li`,{children:e},e))})]}),(0,l.jsx)(`div`,{className:`mt-6 flex gap-2 flex-wrap`,children:(0,l.jsx)(`a`,{href:`/auth/logout`,className:`min-h-[44px] min-w-[44px] inline-flex items-center justify-center px-4 py-2 rounded-[var(--radius-md)] font-medium border border-[var(--color-border)] text-[var(--color-text)] bg-transparent no-underline hover:bg-[var(--color-surface-elevated)] focus-visible:outline focus-visible:outline-2 focus-visible:outline-[var(--color-focus-ring)] focus-visible:outline-offset-2`,children:e(`account.logOut`)})})]})]})}export{f as AccountPage};
@@ -1,8 +1,8 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/HomePage-B--ESwM9.js","assets/vendor-xESPQGR9.js","assets/rolldown-runtime-hePW80VL.js","assets/react-BvB9BS1T.js","assets/tiptap-CCr8bvo1.js","assets/SpaceSelect-D3al0TgQ.js","assets/api-BgTb-tmJ.js","assets/SurfaceCard-BzJidvvn.js","assets/SquadrulesPage-C37VEZnc.js","assets/ErrorAlert-BoPXaBKG.js","assets/RunsPage-BSgcu2TO.js","assets/useRunSession-CB5wPJ8O.js","assets/ProtocolEditPage-HAcAGXw7.js","assets/export-skill-zip-D8iQY1Dl.js","assets/ChallengeCard-DVXo4j0b.js","assets/RichTextEditor-DWLV579w.js","assets/RunGuidedPage-Bewi7Wsx.js","assets/StepFlowGraph-BXsWPPO0.js","assets/SkillBundlePage-CiMQN0nf.js","assets/ProtocolDetailPage-DFe_JOr3.js","assets/AccountPage-DlzuVTtp.js","assets/NotFoundPage-bTE_mpMC.js"])))=>i.map(i=>d[i]);
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/HomePage-B--ESwM9.js","assets/vendor-xESPQGR9.js","assets/rolldown-runtime-hePW80VL.js","assets/react-BvB9BS1T.js","assets/tiptap-CCr8bvo1.js","assets/SpaceSelect-D3al0TgQ.js","assets/api-BgTb-tmJ.js","assets/SurfaceCard-BzJidvvn.js","assets/SquadrulesPage-C37VEZnc.js","assets/ErrorAlert-BoPXaBKG.js","assets/RunsPage-BSgcu2TO.js","assets/useRunSession-CB5wPJ8O.js","assets/ProtocolEditPage-HAcAGXw7.js","assets/export-skill-zip-D8iQY1Dl.js","assets/ChallengeCard-DVXo4j0b.js","assets/RichTextEditor-DWLV579w.js","assets/RunGuidedPage-Bewi7Wsx.js","assets/StepFlowGraph-BXsWPPO0.js","assets/SkillBundlePage-CiMQN0nf.js","assets/ProtocolDetailPage-DFe_JOr3.js","assets/AccountPage-DyTJwGMC.js","assets/NotFoundPage-bTE_mpMC.js"])))=>i.map(i=>d[i]);
2
2
  import{r as e}from"./rolldown-runtime-hePW80VL.js";import{_ as t,b as n,c as r,d as i,f as a,i as o,l as s,o as c,u as l,v as u,x as d,y as f}from"./vendor-xESPQGR9.js";import{i as p,n as m,t as h}from"./react-BvB9BS1T.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})(),d.use(n).init({lng:`en`,fallbackLng:`en`,ns:[`translation`],defaultNS:`translation`,resources:{en:{translation:{"nav.home":`Home`,"nav.squadrules":`Browse`,"nav.create":`Create`,"nav.runs":`Test Run`,"nav.account":`Account`,"layout.squadrulesVersion":`SQUADRULES v{{version}}`,skipToMain:`Skip to main content`,"home.title":`Home`,"home.tagline":`Start from a clear task: browse protocols, create a new workflow, or continue protocol testing.`,"home.findCardTitle":`Find the right protocol`,"home.findCardSubtitle":`Home stays lightweight. Search and deeper discovery live in Browse.`,"home.goToBrowse":`Go to Browse`,"home.cardBrowseTitle":`Browse protocols`,"home.cardBrowseSubtitle":`Search or browse by label.`,"home.cardBrowseCta":`Open Browse`,"home.cardCreateTitle":`Create protocol`,"home.cardCreateSubtitle":`Use the rendered editor to draft a new workflow.`,"home.cardCreateCta":`Create new`,"home.cardRunsTitle":`Test Run`,"home.cardRunsSubtitle":`Resume a saved test run from this device.`,"home.cardRunsCta":`Open Test Run`,"home.spacesHeading":`Spaces`,"home.searchLabel":`Search protocols`,"home.searchPlaceholder":`e.g. deploy and test`,"home.searchHint":`Enter a query to find the best matching protocol. Results open in Browse.`,"home.statsLabel":`Space and protocol counts`,"home.stats.personalProtocols":`—`,"home.stats.personalProtocolsLabel":`Personal protocols`,"home.stats.squadrulesApp":`—`,"home.stats.squadrulesAppLabel":`Squadrules app`,"home.stats.spaces":`—`,"home.stats.spacesLabel":`Spaces`,"home.stats.protocolCount":`{{count}} protocol`,"home.stats.protocolCount_plural":`{{count}} protocols`,"home.ctaPre":`Search and manage protocols in`,"home.ctaSuffix":`.`,"squadrules.title":`Browse`,"squadrules.searchLabel":`Activation query`,"squadrules.searchPlaceholder":`e.g. deploy and test`,"squadrules.searchHint":`Search or browse by label. The default view lists protocols by their label.`,"squadrules.searchHintShort":`Run an activation query to rank the best matches, or browse the list below.`,"squadrules.browseByLabel":`Browse by label`,"squadrules.browseByLetterHint":`Click a letter to list protocols whose title starts with that letter (A–Z).`,"squadrules.letterCount":`Letter {{letter}}, {{count}} protocols`,"squadrules.labelsStartingWith":`Labels starting with {{letter}}`,"squadrules.noLabelsForLetter":`No protocols starting with this letter.`,"squadrules.browseFlatListHint":`Protocols listed by label. This is the default view when you open Browse.`,"squadrules.browseEmpty":`No protocols found in your spaces yet.`,"squadrules.enterQueryHint":`Enter an activation query above to find the best matching protocol. Results appear below.`,"spaces.filterAll":`All spaces`,"spaces.type.personal":`Personal`,"spaces.type.group":`Group`,"spaces.type.app":`App`,"spaces.type.other":`Other`,"squadrules.scopeSpaceLabel":`Limit search to a space`,"squadrules.spaceLabel":`Space`,"squadrules.search":`Activate`,"squadrules.loading":`Activating…`,"squadrules.empty":`No matching protocols found`,"squadrules.foundMatches":`Found {{count}} activation choices (top confidence: {{top}}%). View one, refine the query, or create a new protocol.`,"squadrules.resultsLabel":`Activation results`,"squadrules.score":`Score`,"squadrules.version":`Version`,"squadrules.tagsLabel":`Tags`,"squadrules.refineMeta":`Refine query`,"squadrules.createMeta":`Start from scratch`,"squadrules.view":`View`,"squadrules.viewProtocol":`View {{title}}`,"squadrules.refineSearch":`Refine query`,"squadrules.createNew":`Create new`,"protocol.loading":`Loading protocol…`,"protocol.notFound":`Protocol not found`,"protocol.uri":`URI`,"protocol.spaceLabel":`Space`,"protocol.readOnly":`Read-only`,"protocol.copyUri":`Copy URI`,"protocol.download":`Download`,"protocol.downloadAsMarkdown":`Download as Markdown`,"protocol.downloadAsSkill":`Download as Skill`,"protocol.editAsSkill":`Edit as Skill`,"protocol.expand":`Expand`,"protocol.collapse":`Collapse`,"protocol.edit":`Edit`,"protocol.duplicate":`Duplicate`,"protocol.runGuided":`Test Run`,"protocol.steps":`Steps`,"protocol.stepFlow":`Step flow`,"protocol.exportCardTitle":`Export`,"protocol.exportCardSubtitle":`Clear language replaces internal dump terminology.`,"protocol.exportFooter":`Skill export prepares a portable bundle for external AI tools.`,"protocol.triggers":`Activation patterns`,"protocol.completion":`Reward signal`,"protocol.howToUse":`How to use this protocol`,"protocol.howToUseInProduct":`The public UI helps people read, edit, export, and manually test protocol steps. Live AI execution still happens through MCP or CLI tooling.`,"protocol.howToUseCopy":`Use Test Run from the button above to step through this protocol in the browser. For agents or CLI, use Cursor (MCP) or the command line. See`,"protocol.docsLink":`documentation`,"runs.title":`Test Run`,"runs.subtitle":`Continue a test run you started earlier on this device.`,"runs.empty":`No runs yet.`,"runs.listLabel":`Test Run list`,"runs.status":`Status`,"runs.updated":`Updated`,"runs.stepsDone":`{{count}} steps completed`,"runs.resume":`Resume`,"runs.remove":`Remove`,"run.title":`Test Run`,"run.guidedIntro":`Step through the saved run in the browser and submit the same data the current run flow expects.`,"run.progressHeading":`Progress`,"run.currentStepHeading":`Current step`,"run.challengeHeading":`Challenge`,"run.stepProgress":`Step {{current}} of {{total}}`,"run.sessionBadge":`Active manual test session`,"run.flowStepN":`{{n}}`,"run.copyShellCommand":`Copy command`,"run.adapterUri":`Adapter URI`,"run.backToProtocol":`Back to adapter`,"run.start":`Start run`,"run.starting":`Starting…`,"run.safety.title":`Safe by default`,"run.safety.copy":`This guided run never executes shell commands in your browser. For shell challenges, run the command yourself and paste the real results.`,"run.serverMessage":`Server message`,"run.currentLayer":`Current layer`,"run.layerUri":`Layer URI`,"run.noLayerContent":`(No layer content)`,"run.contract":`Contract`,"run.contractType":`Type`,"run.advanced":`Advanced`,"run.nonce":`Nonce`,"run.proofHash":`Challenge proof_hash`,"run.previousProofHash":`Previous proof_hash`,"run.copy":`Copy`,"run.copied":`Copied`,"run.solution":`Solution`,"run.solutionFormLabel":`Submit solution`,"run.submitStep":`Submit step`,"run.shell.command":`Command`,"run.shell.invocation":`Invocation`,"run.shell.exitCode":`Exit code`,"run.shell.stdout":`Stdout`,"run.shell.stderr":`Stderr`,"run.mcp.toolName":`Tool`,"run.mcp.toolMissing":`(Missing tool name)`,"run.mcp.success":`Success`,"run.mcp.arguments":`Arguments (JSON)`,"run.mcp.result":`Result (JSON)`,"run.userInput.prompt":`Prompt`,"run.userInput.promptMissing":`(Missing prompt)`,"run.userInput.confirmation":`User confirmation`,"run.comment.minLength":`Minimum {{count}} characters`,"run.comment.count":`{{count}} typed`,"run.comment.text":`Comment`,"run.reward.title":`Reward completion`,"run.reward.subtitle":`Finalize the run outcome for reward and export quality.`,"run.reward.outcomeLabel":`Outcome`,"run.reward.success":`Success`,"run.reward.failure":`Failure`,"run.reward.feedback":`Feedback`,"run.reward.submit":`Submit reward`,"run.reward.submitting":`Submitting…`,"run.reward.defaultFeedback":`Completed guided run.`,"run.stepperProgress":`{{completed}} step(s) completed`,"run.history":`History`,"run.historyLabel":`Run history`,"run.completed":`Run completed`,"run.missingUri":`Missing adapter URI.`,"protocolEdit.newTitle":`New protocol`,"protocolEdit.editTitle":`Edit protocol`,"protocolEdit.hint":`Write as a human. The editor renders text on input and output while keeping the saved format compatible with generic Markdown.`,"protocolEdit.stepHeading":`Step {{n}}`,"protocolEdit.stepEditorHint":`Human-friendly editor with Markdown-safe formatting.`,"protocolEdit.triggersEditorHint":`Shown to humans as rendered text and serialized as Markdown-compatible content.`,"protocolEdit.previewRenderedTitle":`Rendered preview`,"protocolEdit.previewRenderedSubtitle":`Reading flow is fully rendered. Editing keeps a Markdown-safe rich text surface and this card previews section structure.`,"protocolEdit.previewStepLine":`Step {{n}}: {{label}}`,"protocolEdit.skillShortcutTitle":`Skill bundle shortcut`,"protocolEdit.skillShortcutSubtitle":`Authors can turn a protocol into a reusable skill bundle without learning repo-internal file names.`,"protocolEdit.formLabel":`Protocol form`,"protocolEdit.protocolLabel":`Protocol label`,"protocolEdit.triggersLabel":`Activation patterns`,"protocolEdit.triggersHint":`Describe when this protocol should run (e.g. deploy and test).`,"protocolEdit.stepLabel":`Step label`,"protocolEdit.stepContent":`Step content`,"protocolEdit.challengeType":`Challenge type`,"protocolEdit.addStep":`Add step`,"protocolEdit.removeStep":`Remove step`,"protocolEdit.completionLabel":`Reward signal`,"protocolEdit.challengeShell":`Shell command`,"protocolEdit.challengeMcp":`MCP tool call`,"protocolEdit.challengeUserInput":`User input`,"protocolEdit.challengeComment":`Comment`,"protocolEdit.shellCmd":`Command`,"protocolEdit.shellTimeout":`Timeout (seconds)`,"protocolEdit.shellInterpreter":`Interpreter (optional)`,"protocolEdit.shellFlags":`Flags (one per line, optional)`,"protocolEdit.shellArgs":`Args (one per line, optional)`,"protocolEdit.shellWorkdir":`Workdir (optional)`,"protocolEdit.mcpToolName":`Tool name`,"protocolEdit.userInputPrompt":`Prompt`,"protocolEdit.commentMinLength":`Minimum length (characters)`,"protocolEdit.importCardTitle":`Import existing content`,"protocolEdit.uploadHint":"Uploading a `.md` file fills this editor form. It does not publish or overwrite anything until you save.","protocolEdit.contentLabel":`Protocol content (markdown)`,"protocolEdit.previewLabel":`Protocol preview`,"protocolEdit.previewTitle":`Live preview`,"protocolEdit.previewSteps":`Steps`,"protocolEdit.previewNoSteps":`No steps yet.`,"protocolEdit.previewSections":`Key sections`,"protocolEdit.present":`present`,"protocolEdit.missing":`missing`,"protocolEdit.insertTemplate":`Insert template`,"protocolEdit.upload":`Upload .md file`,"skill.title":`Edit as Skill`,"skill.subtitle":`Prepare a skill bundle for external AI tools before downloading the zip. Protocol content stays connected to the original workflow.`,"skill.bundleContentsTitle":`Bundle contents`,"skill.bundleContentsSubtitle":`Optional protocol references can be included in a dedicated folder.`,"skill.chipReadme":`Include README snippet`,"skill.chipPrompts":`Include example prompts`,"skill.comingSoon":`Coming soon`,"skill.bundlePreviewTitle":`Bundle preview`,"skill.bundlePreviewSubtitle":`Zip root contains the skill folder so users can upload it directly.`,"skill.whyExportTitle":`Why this export exists`,"skill.whyExportSubtitle":`The bundle is for human-friendly reuse, not an internal raw dump.`,"skill.whyExportBody":`Authors can package a protocol as a portable skill with polished naming and usage guidance, then download the final zip in one step.`,"skill.skillName":`Skill name`,"skill.description":`Skill description`,"skill.descriptionHint":`Describe what the skill does and when an AI assistant should use it.`,"skill.whenToUse":`When to use it`,"skill.includeReferences":`Include references folder`,"skill.downloadAsSkill":`Download as Skill`,"skill.backToProtocol":`Back to protocol`,"protocolEdit.placeholder":`# Protocol title
3
3
 
4
4
  ## Activation Patterns
5
5
  ...
6
6
 
7
7
  ## Step 1
8
- ...`,"protocolEdit.contentHint":`Include: Activation Patterns (first H2), steps (H2 + optional challenge block), Reward Signal (last H2).`,"protocolEdit.targetSpaceLabel":`Save to space`,"protocolEdit.targetSpaceHint":`New protocols are stored in the space you pick (default: Personal).`,"protocolEdit.forkSourceLabel":`Fork from adapter (optional)`,"protocolEdit.forkSourcePlaceholder":`squadrules://adapter/{slug}`,"protocolEdit.forkSourceHint":`Leave empty for a brand-new protocol, or paste an adapter URI to copy its markdown into the target space as a new adapter.`,"protocolEdit.forkUriInvalid":`Fork source must be a squadrules://adapter/{slug} URI.`,"protocolEdit.moveSpaceLabel":`Space for this protocol`,"protocolEdit.moveSpaceHint":`Change the space and save to move every layer to the selected space (same as tune with a space parameter).`,"protocolEdit.save":`Save`,"protocolEdit.saving":`Saving…`,"protocolEdit.cancel":`Cancel`,"account.title":`Account`,"account.intro":`You are signed in. Sign out below or use the options to manage your profile.`,"account.loading":`Loading…`,"account.notSignedIn":`You are not signed in.`,"account.signIn":`Sign in`,"account.name":`Name`,"account.username":`Username`,"account.email":`Email`,"account.emailVerified":`verified`,"account.accountType":`Account type`,"account.realm":`Realm`,"account.identityProvider":`Login provider`,"account.groups":`Groups`,"account.themeTitle":`Theme`,"account.themeDescription":`Choose how SQUADRULES UI appearance should be rendered.`,"account.themePreferenceLabel":`Theme preference`,"account.themeOptionLight":`Light`,"account.themeOptionDark":`Dark`,"account.themeOptionSystem":`Match system`,"account.logOut":`Log out`,"notFound.title":`Page not found`,"notFound.message":`The page you requested could not be found.`,"notFound.goHome":`Go to Home`,"error.title":`Something went wrong`,"error.retry":`Retry`,"error.goBack":`Go to Home`,"error.support":`Support`}}},interpolation:{escapeValue:!1}});var g=e(p(),1),_=m(),v=`/ui/assets/squadrules-mcp-Qc5pokoj.svg`,y=h(),b=e=>e.startsWith(`/protocols`)||e.startsWith(`/runs`);function x(){let{t:e}=f(),t=a().pathname,n=({isActive:e})=>`min-h-[var(--layout-touch-target)] flex items-center px-4 py-3 text-[var(--color-text)] no-underline border-l-[3px] border-transparent outline-offset-2 focus-visible:outline focus-visible:outline-2 focus-visible:outline-[var(--color-focus-ring)] hover:bg-[var(--color-surface)] hover:text-[var(--color-text-heading)] ${e?`font-semibold text-[var(--color-primary)] border-l-[var(--color-primary)] bg-[var(--color-surface)]`:``}`,r=b(t)?`min(100%, var(--layout-main-max), var(--layout-main-wide))`:`min(100%, var(--layout-main-max), var(--layout-main-narrow))`;return(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(`a`,{href:`#main`,className:`skip-link`,children:e(`skipToMain`)}),(0,y.jsxs)(`div`,{className:`flex min-h-screen`,children:[(0,y.jsxs)(`aside`,{className:`flex min-h-screen w-[var(--layout-sidebar-width)] flex-shrink-0 flex-col border-r border-[var(--color-border)] bg-[var(--color-surface-elevated)] py-4`,"aria-label":`Main navigation`,children:[(0,y.jsx)(`div`,{className:`px-4 pb-4`,children:(0,y.jsxs)(c,{to:`/`,end:!0,className:`flex min-h-[var(--layout-touch-target)] min-w-[var(--layout-touch-target)] items-center gap-3 rounded-md outline-offset-2 focus-visible:outline focus-visible:outline-2 focus-visible:outline-[var(--color-focus-ring)]`,children:[(0,y.jsx)(`img`,{src:v,alt:``,className:`h-10 w-10 flex-shrink-0 rounded-lg object-contain`,width:`40`,height:`40`}),(0,y.jsxs)(`span`,{className:`flex flex-col leading-tight`,children:[(0,y.jsx)(`span`,{className:`font-bold text-[var(--color-text-heading)] text-lg`,children:`Squadrules`}),(0,y.jsx)(`span`,{className:`font-bold text-[var(--color-text-muted)] text-xs uppercase tracking-wide`,children:`MCP`})]})]})}),(0,y.jsxs)(`nav`,{className:`flex min-h-0 flex-1 flex-col gap-0.5`,children:[(0,y.jsx)(c,{to:`/`,end:!0,"aria-current":t===`/`?`page`:void 0,className:n,children:e(`nav.home`)}),(0,y.jsx)(c,{to:`/squadrules`,"aria-current":t===`/squadrules`?`page`:void 0,className:n,children:e(`nav.squadrules`)}),(0,y.jsx)(c,{to:`/protocols/new`,"aria-current":t===`/protocols/new`?`page`:void 0,className:n,children:e(`nav.create`)}),(0,y.jsx)(c,{to:`/runs`,"aria-current":t===`/runs`?`page`:void 0,className:n,children:e(`nav.runs`)}),(0,y.jsx)(c,{to:`/account`,"aria-current":t===`/account`?`page`:void 0,className:n,children:e(`nav.account`)})]}),(0,y.jsx)(`div`,{className:`mt-auto border-t border-[var(--color-border)] px-4 pt-3`,children:(0,y.jsx)(`p`,{className:`m-0 text-xs text-[var(--color-text-muted)]`,children:e(`layout.squadrulesVersion`,{version:`5.4.2`})})})]}),(0,y.jsx)(`main`,{id:`main`,className:`flex-1 mx-auto w-full py-[var(--layout-main-padding-y)] px-[var(--layout-main-padding-x)]`,style:{maxWidth:r},tabIndex:-1,children:(0,y.jsx)(s,{})})]})]})}var S=(0,g.lazy)(()=>r(()=>import(`./HomePage-B--ESwM9.js`).then(e=>({default:e.HomePage})),__vite__mapDeps([0,1,2,3,4,5,6,7]))),C=(0,g.lazy)(()=>r(()=>import(`./SquadrulesPage-C37VEZnc.js`).then(e=>({default:e.SquadrulesPage})),__vite__mapDeps([8,2,1,3,4,6,5,9]))),w=(0,g.lazy)(()=>r(()=>import(`./RunsPage-BSgcu2TO.js`).then(e=>({default:e.RunsPage})),__vite__mapDeps([10,1,2,3,4,11]))),T=(0,g.lazy)(()=>r(()=>import(`./ProtocolEditPage-HAcAGXw7.js`).then(e=>({default:e.ProtocolEditPage})),__vite__mapDeps([12,2,1,3,4,6,5,7,13,14,15]))),E=(0,g.lazy)(()=>r(()=>import(`./RunGuidedPage-Bewi7Wsx.js`).then(e=>({default:e.RunGuidedPage})),__vite__mapDeps([16,2,1,3,4,6,7,9,14,17,11]))),D=(0,g.lazy)(()=>r(()=>import(`./SkillBundlePage-CiMQN0nf.js`).then(e=>({default:e.SkillBundlePage})),__vite__mapDeps([18,2,1,3,4,7,13,6,15]))),O=(0,g.lazy)(()=>r(()=>import(`./ProtocolDetailPage-DFe_JOr3.js`).then(e=>({default:e.ProtocolDetailPage})),__vite__mapDeps([19,2,1,3,4,7,13,6,14,17]))),k=(0,g.lazy)(()=>r(()=>import(`./AccountPage-DlzuVTtp.js`).then(e=>({default:e.AccountPage})),__vite__mapDeps([20,1,2,3,4,6]))),A=(0,g.lazy)(()=>r(()=>import(`./NotFoundPage-bTE_mpMC.js`).then(e=>({default:e.NotFoundPage})),__vite__mapDeps([21,1,2,3,4,9])));function j(){return(0,y.jsx)(`div`,{className:`flex min-h-[12rem] items-center justify-center text-[var(--color-text-muted)]`,"aria-busy":`true`,children:`Loading…`})}function M(){return(0,y.jsx)(i,{children:(0,y.jsxs)(l,{path:`/`,element:(0,y.jsx)(x,{}),children:[(0,y.jsx)(l,{index:!0,element:(0,y.jsx)(g.Suspense,{fallback:(0,y.jsx)(j,{}),children:(0,y.jsx)(S,{})})}),(0,y.jsx)(l,{path:`squadrules`,element:(0,y.jsx)(g.Suspense,{fallback:(0,y.jsx)(j,{}),children:(0,y.jsx)(C,{})})}),(0,y.jsx)(l,{path:`runs`,element:(0,y.jsx)(g.Suspense,{fallback:(0,y.jsx)(j,{}),children:(0,y.jsx)(w,{})})}),(0,y.jsx)(l,{path:`protocols/new`,element:(0,y.jsx)(g.Suspense,{fallback:(0,y.jsx)(j,{}),children:(0,y.jsx)(T,{})})}),(0,y.jsx)(l,{path:`protocols/:uri/edit`,element:(0,y.jsx)(g.Suspense,{fallback:(0,y.jsx)(j,{}),children:(0,y.jsx)(T,{})})}),(0,y.jsx)(l,{path:`protocols/:uri/run`,element:(0,y.jsx)(g.Suspense,{fallback:(0,y.jsx)(j,{}),children:(0,y.jsx)(E,{})})}),(0,y.jsx)(l,{path:`protocols/:uri/skill`,element:(0,y.jsx)(g.Suspense,{fallback:(0,y.jsx)(j,{}),children:(0,y.jsx)(D,{})})}),(0,y.jsx)(l,{path:`protocols/:uri`,element:(0,y.jsx)(g.Suspense,{fallback:(0,y.jsx)(j,{}),children:(0,y.jsx)(O,{})})}),(0,y.jsx)(l,{path:`account`,element:(0,y.jsx)(g.Suspense,{fallback:(0,y.jsx)(j,{}),children:(0,y.jsx)(k,{})})}),(0,y.jsx)(l,{path:`*`,element:(0,y.jsx)(g.Suspense,{fallback:(0,y.jsx)(j,{}),children:(0,y.jsx)(A,{})})})]})})}function N(){return(0,y.jsx)(o,{basename:`/ui`,children:(0,y.jsx)(M,{})})}var P=[`light`,`dark`],F=`squadrules:ui:theme-preference`,I=`(prefers-color-scheme: dark)`,L=`system`;function R(e){return e===null?!1:e===`system`||P.includes(e)}function z(e,t){return e===`system`?t?`dark`:`light`:e}function B(){if(typeof window>`u`)return L;try{let e=window.localStorage.getItem(F);return R(e)?e:L}catch{return L}}function V(){return typeof window>`u`||typeof window.matchMedia!=`function`?!1:window.matchMedia(I).matches}function H(e){if(typeof document>`u`)return;let t=document.documentElement;t.setAttribute(`data-theme`,e),t.style.colorScheme=e===`light`?`light`:`dark`}function U(){let[e,t]=(0,g.useState)(()=>B()),[n,r]=(0,g.useState)(()=>V()),i=(0,g.useMemo)(()=>z(e,n),[e,n]);return(0,g.useEffect)(()=>{H(i)},[i]),(0,g.useEffect)(()=>{if(typeof window>`u`||e!==`system`||typeof window.matchMedia!=`function`)return;let t=window.matchMedia(I);r(t.matches);let n=e=>{r(e.matches)};return typeof t.addEventListener==`function`?(t.addEventListener(`change`,n),()=>t.removeEventListener(`change`,n)):(t.addListener(n),()=>t.removeListener(n))},[e]),(0,g.useEffect)(()=>{if(typeof window>`u`)return;let e=e=>{e.key===`squadrules:ui:theme-preference`&&t(R(e.newValue)?e.newValue:L)};return window.addEventListener(`storage`,e),()=>window.removeEventListener(`storage`,e)},[]),{preference:e,effectiveTheme:i,setPreference:(0,g.useCallback)(e=>{if(t(e),typeof window<`u`)try{window.localStorage.setItem(F,e)}catch{}},[])}}var W=(0,g.createContext)(null);function G({children:e}){let t=U();return(0,y.jsx)(W.Provider,{value:t,children:e})}function K(){let e=(0,g.useContext)(W);if(!e)throw Error(`useThemePreferenceContext must be used within ThemeProvider`);return e}var q=new t;(0,_.createRoot)(document.getElementById(`root`)).render((0,y.jsx)(g.StrictMode,{children:(0,y.jsx)(u,{client:q,children:(0,y.jsx)(G,{children:(0,y.jsx)(N,{})})})}));export{R as n,K as r,P as t};
8
+ ...`,"protocolEdit.contentHint":`Include: Activation Patterns (first H2), steps (H2 + optional challenge block), Reward Signal (last H2).`,"protocolEdit.targetSpaceLabel":`Save to space`,"protocolEdit.targetSpaceHint":`New protocols are stored in the space you pick (default: Personal).`,"protocolEdit.forkSourceLabel":`Fork from adapter (optional)`,"protocolEdit.forkSourcePlaceholder":`squadrules://adapter/{slug}`,"protocolEdit.forkSourceHint":`Leave empty for a brand-new protocol, or paste an adapter URI to copy its markdown into the target space as a new adapter.`,"protocolEdit.forkUriInvalid":`Fork source must be a squadrules://adapter/{slug} URI.`,"protocolEdit.moveSpaceLabel":`Space for this protocol`,"protocolEdit.moveSpaceHint":`Change the space and save to move every layer to the selected space (same as tune with a space parameter).`,"protocolEdit.save":`Save`,"protocolEdit.saving":`Saving…`,"protocolEdit.cancel":`Cancel`,"account.title":`Account`,"account.intro":`You are signed in. Sign out below or use the options to manage your profile.`,"account.loading":`Loading…`,"account.notSignedIn":`You are not signed in.`,"account.signIn":`Sign in`,"account.name":`Name`,"account.username":`Username`,"account.email":`Email`,"account.emailVerified":`verified`,"account.accountType":`Account type`,"account.realm":`Realm`,"account.identityProvider":`Login provider`,"account.groups":`Groups`,"account.themeTitle":`Theme`,"account.themeDescription":`Choose how SQUADRULES UI appearance should be rendered.`,"account.themePreferenceLabel":`Theme preference`,"account.themeOptionLight":`Light`,"account.themeOptionDark":`Dark`,"account.themeOptionSystem":`Match system`,"account.logOut":`Log out`,"notFound.title":`Page not found`,"notFound.message":`The page you requested could not be found.`,"notFound.goHome":`Go to Home`,"error.title":`Something went wrong`,"error.retry":`Retry`,"error.goBack":`Go to Home`,"error.support":`Support`}}},interpolation:{escapeValue:!1}});var g=e(p(),1),_=m(),v=`/ui/assets/squadrules-mcp-Qc5pokoj.svg`,y=h(),b=e=>e.startsWith(`/protocols`)||e.startsWith(`/runs`);function x(){let{t:e}=f(),t=a().pathname,n=({isActive:e})=>`min-h-[var(--layout-touch-target)] flex items-center px-4 py-3 text-[var(--color-text)] no-underline border-l-[3px] border-transparent outline-offset-2 focus-visible:outline focus-visible:outline-2 focus-visible:outline-[var(--color-focus-ring)] hover:bg-[var(--color-surface)] hover:text-[var(--color-text-heading)] ${e?`font-semibold text-[var(--color-primary)] border-l-[var(--color-primary)] bg-[var(--color-surface)]`:``}`,r=b(t)?`min(100%, var(--layout-main-max), var(--layout-main-wide))`:`min(100%, var(--layout-main-max), var(--layout-main-narrow))`;return(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(`a`,{href:`#main`,className:`skip-link`,children:e(`skipToMain`)}),(0,y.jsxs)(`div`,{className:`flex min-h-screen`,children:[(0,y.jsxs)(`aside`,{className:`flex min-h-screen w-[var(--layout-sidebar-width)] flex-shrink-0 flex-col border-r border-[var(--color-border)] bg-[var(--color-surface-elevated)] py-4`,"aria-label":`Main navigation`,children:[(0,y.jsx)(`div`,{className:`px-4 pb-4`,children:(0,y.jsxs)(c,{to:`/`,end:!0,className:`flex min-h-[var(--layout-touch-target)] min-w-[var(--layout-touch-target)] items-center gap-3 rounded-md outline-offset-2 focus-visible:outline focus-visible:outline-2 focus-visible:outline-[var(--color-focus-ring)]`,children:[(0,y.jsx)(`img`,{src:v,alt:``,className:`h-10 w-10 flex-shrink-0 rounded-lg object-contain`,width:`40`,height:`40`}),(0,y.jsxs)(`span`,{className:`flex flex-col leading-tight`,children:[(0,y.jsx)(`span`,{className:`font-bold text-[var(--color-text-heading)] text-lg`,children:`Squadrules`}),(0,y.jsx)(`span`,{className:`font-bold text-[var(--color-text-muted)] text-xs uppercase tracking-wide`,children:`MCP`})]})]})}),(0,y.jsxs)(`nav`,{className:`flex min-h-0 flex-1 flex-col gap-0.5`,children:[(0,y.jsx)(c,{to:`/`,end:!0,"aria-current":t===`/`?`page`:void 0,className:n,children:e(`nav.home`)}),(0,y.jsx)(c,{to:`/squadrules`,"aria-current":t===`/squadrules`?`page`:void 0,className:n,children:e(`nav.squadrules`)}),(0,y.jsx)(c,{to:`/protocols/new`,"aria-current":t===`/protocols/new`?`page`:void 0,className:n,children:e(`nav.create`)}),(0,y.jsx)(c,{to:`/runs`,"aria-current":t===`/runs`?`page`:void 0,className:n,children:e(`nav.runs`)}),(0,y.jsx)(c,{to:`/account`,"aria-current":t===`/account`?`page`:void 0,className:n,children:e(`nav.account`)})]}),(0,y.jsx)(`div`,{className:`mt-auto border-t border-[var(--color-border)] px-4 pt-3`,children:(0,y.jsx)(`p`,{className:`m-0 text-xs text-[var(--color-text-muted)]`,children:e(`layout.squadrulesVersion`,{version:`5.5.1`})})})]}),(0,y.jsx)(`main`,{id:`main`,className:`flex-1 mx-auto w-full py-[var(--layout-main-padding-y)] px-[var(--layout-main-padding-x)]`,style:{maxWidth:r},tabIndex:-1,children:(0,y.jsx)(s,{})})]})]})}var S=(0,g.lazy)(()=>r(()=>import(`./HomePage-B--ESwM9.js`).then(e=>({default:e.HomePage})),__vite__mapDeps([0,1,2,3,4,5,6,7]))),C=(0,g.lazy)(()=>r(()=>import(`./SquadrulesPage-C37VEZnc.js`).then(e=>({default:e.SquadrulesPage})),__vite__mapDeps([8,2,1,3,4,6,5,9]))),w=(0,g.lazy)(()=>r(()=>import(`./RunsPage-BSgcu2TO.js`).then(e=>({default:e.RunsPage})),__vite__mapDeps([10,1,2,3,4,11]))),T=(0,g.lazy)(()=>r(()=>import(`./ProtocolEditPage-HAcAGXw7.js`).then(e=>({default:e.ProtocolEditPage})),__vite__mapDeps([12,2,1,3,4,6,5,7,13,14,15]))),E=(0,g.lazy)(()=>r(()=>import(`./RunGuidedPage-Bewi7Wsx.js`).then(e=>({default:e.RunGuidedPage})),__vite__mapDeps([16,2,1,3,4,6,7,9,14,17,11]))),D=(0,g.lazy)(()=>r(()=>import(`./SkillBundlePage-CiMQN0nf.js`).then(e=>({default:e.SkillBundlePage})),__vite__mapDeps([18,2,1,3,4,7,13,6,15]))),O=(0,g.lazy)(()=>r(()=>import(`./ProtocolDetailPage-DFe_JOr3.js`).then(e=>({default:e.ProtocolDetailPage})),__vite__mapDeps([19,2,1,3,4,7,13,6,14,17]))),k=(0,g.lazy)(()=>r(()=>import(`./AccountPage-DyTJwGMC.js`).then(e=>({default:e.AccountPage})),__vite__mapDeps([20,1,2,3,4,6]))),A=(0,g.lazy)(()=>r(()=>import(`./NotFoundPage-bTE_mpMC.js`).then(e=>({default:e.NotFoundPage})),__vite__mapDeps([21,1,2,3,4,9])));function j(){return(0,y.jsx)(`div`,{className:`flex min-h-[12rem] items-center justify-center text-[var(--color-text-muted)]`,"aria-busy":`true`,children:`Loading…`})}function M(){return(0,y.jsx)(i,{children:(0,y.jsxs)(l,{path:`/`,element:(0,y.jsx)(x,{}),children:[(0,y.jsx)(l,{index:!0,element:(0,y.jsx)(g.Suspense,{fallback:(0,y.jsx)(j,{}),children:(0,y.jsx)(S,{})})}),(0,y.jsx)(l,{path:`squadrules`,element:(0,y.jsx)(g.Suspense,{fallback:(0,y.jsx)(j,{}),children:(0,y.jsx)(C,{})})}),(0,y.jsx)(l,{path:`runs`,element:(0,y.jsx)(g.Suspense,{fallback:(0,y.jsx)(j,{}),children:(0,y.jsx)(w,{})})}),(0,y.jsx)(l,{path:`protocols/new`,element:(0,y.jsx)(g.Suspense,{fallback:(0,y.jsx)(j,{}),children:(0,y.jsx)(T,{})})}),(0,y.jsx)(l,{path:`protocols/:uri/edit`,element:(0,y.jsx)(g.Suspense,{fallback:(0,y.jsx)(j,{}),children:(0,y.jsx)(T,{})})}),(0,y.jsx)(l,{path:`protocols/:uri/run`,element:(0,y.jsx)(g.Suspense,{fallback:(0,y.jsx)(j,{}),children:(0,y.jsx)(E,{})})}),(0,y.jsx)(l,{path:`protocols/:uri/skill`,element:(0,y.jsx)(g.Suspense,{fallback:(0,y.jsx)(j,{}),children:(0,y.jsx)(D,{})})}),(0,y.jsx)(l,{path:`protocols/:uri`,element:(0,y.jsx)(g.Suspense,{fallback:(0,y.jsx)(j,{}),children:(0,y.jsx)(O,{})})}),(0,y.jsx)(l,{path:`account`,element:(0,y.jsx)(g.Suspense,{fallback:(0,y.jsx)(j,{}),children:(0,y.jsx)(k,{})})}),(0,y.jsx)(l,{path:`*`,element:(0,y.jsx)(g.Suspense,{fallback:(0,y.jsx)(j,{}),children:(0,y.jsx)(A,{})})})]})})}function N(){return(0,y.jsx)(o,{basename:`/ui`,children:(0,y.jsx)(M,{})})}var P=[`light`,`dark`],F=`squadrules:ui:theme-preference`,I=`(prefers-color-scheme: dark)`,L=`system`;function R(e){return e===null?!1:e===`system`||P.includes(e)}function z(e,t){return e===`system`?t?`dark`:`light`:e}function B(){if(typeof window>`u`)return L;try{let e=window.localStorage.getItem(F);return R(e)?e:L}catch{return L}}function V(){return typeof window>`u`||typeof window.matchMedia!=`function`?!1:window.matchMedia(I).matches}function H(e){if(typeof document>`u`)return;let t=document.documentElement;t.setAttribute(`data-theme`,e),t.style.colorScheme=e===`light`?`light`:`dark`}function U(){let[e,t]=(0,g.useState)(()=>B()),[n,r]=(0,g.useState)(()=>V()),i=(0,g.useMemo)(()=>z(e,n),[e,n]);return(0,g.useEffect)(()=>{H(i)},[i]),(0,g.useEffect)(()=>{if(typeof window>`u`||e!==`system`||typeof window.matchMedia!=`function`)return;let t=window.matchMedia(I);r(t.matches);let n=e=>{r(e.matches)};return typeof t.addEventListener==`function`?(t.addEventListener(`change`,n),()=>t.removeEventListener(`change`,n)):(t.addListener(n),()=>t.removeListener(n))},[e]),(0,g.useEffect)(()=>{if(typeof window>`u`)return;let e=e=>{e.key===`squadrules:ui:theme-preference`&&t(R(e.newValue)?e.newValue:L)};return window.addEventListener(`storage`,e),()=>window.removeEventListener(`storage`,e)},[]),{preference:e,effectiveTheme:i,setPreference:(0,g.useCallback)(e=>{if(t(e),typeof window<`u`)try{window.localStorage.setItem(F,e)}catch{}},[])}}var W=(0,g.createContext)(null);function G({children:e}){let t=U();return(0,y.jsx)(W.Provider,{value:t,children:e})}function K(){let e=(0,g.useContext)(W);if(!e)throw Error(`useThemePreferenceContext must be used within ThemeProvider`);return e}var q=new t;(0,_.createRoot)(document.getElementById(`root`)).render((0,y.jsx)(g.StrictMode,{children:(0,y.jsx)(u,{client:q,children:(0,y.jsx)(G,{children:(0,y.jsx)(N,{})})})}));export{R as n,K as r,P as t};
@@ -0,0 +1,2 @@
1
+ /*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */
2
+ @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}}}@layer theme{:root,:host{--font-sans:var(--font-sans);--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--container-md:28rem;--container-2xl:42rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-wide:.025em;--tracking-wider:.05em;--leading-tight:1.25;--radius-sm:var(--radius-sm);--radius-md:var(--radius-md);--radius-lg:var(--radius-lg);--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-primary:var(--color-primary);--color-primary-hover:var(--color-primary-hover);--color-secondary:var(--color-secondary);--color-accent:var(--color-accent);--color-text:var(--color-text);--color-text-heading:var(--color-text-heading);--color-text-muted:var(--color-text-muted);--color-surface:var(--color-surface);--color-surface-elevated:var(--color-surface-elevated);--color-border:var(--color-border);--color-error:var(--color-error);--color-error-bg:var(--color-error-bg);--color-success:var(--color-success);--color-warning:var(--color-warning);--color-focus-ring:var(--color-focus-ring);--badge-shell-bg:var(--badge-shell-bg);--badge-shell-fg:var(--badge-shell-fg);--badge-mcp-bg:var(--badge-mcp-bg);--badge-mcp-fg:var(--badge-mcp-fg);--badge-user-input-bg:var(--badge-user-input-bg);--badge-user-input-fg:var(--badge-user-input-fg);--badge-comment-bg:var(--badge-comment-bg);--badge-comment-fg:var(--badge-comment-fg);--badge-match-bg:var(--badge-match-bg);--badge-match-fg:var(--badge-match-fg);--badge-refine-bg:var(--badge-refine-bg);--badge-refine-fg:var(--badge-refine-fg);--badge-create-bg:var(--badge-create-bg);--badge-create-fg:var(--badge-create-fg);--badge-personal-bg:var(--badge-personal-bg);--badge-personal-fg:var(--badge-personal-fg);--badge-group-bg:var(--badge-group-bg);--badge-group-fg:var(--badge-group-fg);--badge-app-bg:var(--badge-app-bg);--badge-app-fg:var(--badge-app-fg);--badge-other-bg:var(--badge-other-bg);--badge-other-fg:var(--badge-other-fg);--status-success-bg:var(--status-success-bg);--status-success-fg:var(--status-success-fg);--font-size-xs:var(--font-size-xs);--font-size-sm:var(--font-size-sm);--font-size-base:var(--font-size-base);--font-size-lg:var(--font-size-lg);--font-size-xl:var(--font-size-xl);--font-size-2xl:var(--font-size-2xl);--font-size-3xl:var(--font-size-3xl);--spacing-4:var(--space-4)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.isolate{isolation:isolate}.row-1{grid-row:1}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.m-0{margin:var(--space-0)}.mx-auto{margin-inline:auto}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:var(--space-1)}.mt-2{margin-top:var(--space-2)}.mt-3{margin-top:var(--space-3)}.mt-4{margin-top:var(--space-4)}.mt-6{margin-top:var(--space-6)}.mt-auto{margin-top:auto}.mb-1{margin-bottom:var(--space-1)}.mb-2{margin-bottom:var(--space-2)}.mb-3{margin-bottom:var(--space-3)}.mb-4{margin-bottom:var(--space-4)}.mb-6{margin-bottom:var(--space-6)}.mb-8{margin-bottom:var(--space-8)}.ml-2{margin-left:var(--space-2)}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.h-4{height:var(--space-4)}.h-5{height:var(--space-5)}.h-10{height:var(--space-10)}.max-h-40{max-height:calc(var(--spacing) * 40)}.min-h-0{min-height:var(--space-0)}.min-h-\[6rem\]{min-height:6rem}.min-h-\[8rem\]{min-height:8rem}.min-h-\[10rem\]{min-height:10rem}.min-h-\[11rem\]{min-height:11rem}.min-h-\[12rem\]{min-height:12rem}.min-h-\[32px\]{min-height:32px}.min-h-\[36px\]{min-height:36px}.min-h-\[44px\]{min-height:44px}.min-h-\[var\(--layout-touch-target\)\]{min-height:var(--layout-touch-target)}.min-h-screen{min-height:100vh}.w-1\/2{width:50%}.w-3\/4{width:75%}.w-4{width:var(--space-4)}.w-10{width:var(--space-10)}.w-16{width:calc(var(--spacing) * 16)}.w-20{width:calc(var(--spacing) * 20)}.w-\[var\(--layout-sidebar-width\)\]{width:var(--layout-sidebar-width)}.w-full{width:100%}.max-w-2xl{max-width:var(--container-2xl)}.max-w-\[22rem\]{max-width:22rem}.max-w-md{max-width:var(--container-md)}.max-w-none{max-width:none}.max-w-xs{max-width:var(--container-xs)}.min-w-0{min-width:var(--space-0)}.min-w-\[36px\]{min-width:36px}.min-w-\[44px\]{min-width:44px}.min-w-\[var\(--layout-touch-target\)\]{min-width:var(--layout-touch-target)}.flex-1{flex:1}.flex-shrink{flex-shrink:1}.flex-shrink-0{flex-shrink:0}.shrink{flex-shrink:1}.border-collapse{border-collapse:collapse}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-pulse{animation:var(--animate-pulse)}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.resize{resize:both}.resize-y{resize:vertical}.list-inside{list-style-position:inside}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:var(--space-1)}.gap-2{gap:var(--space-2)}.gap-3{gap:var(--space-3)}.gap-4{gap:var(--space-4)}.gap-6{gap:var(--space-6)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(var(--space-1) * var(--tw-space-y-reverse));margin-block-end:calc(var(--space-1) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(var(--space-2) * var(--tw-space-y-reverse));margin-block-end:calc(var(--space-2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(var(--space-3) * var(--tw-space-y-reverse));margin-block-end:calc(var(--space-3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(var(--space-4) * var(--tw-space-y-reverse));margin-block-end:calc(var(--space-4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(var(--space-5) * var(--tw-space-y-reverse));margin-block-end:calc(var(--space-5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(var(--space-6) * var(--tw-space-y-reverse));margin-block-end:calc(var(--space-6) * calc(1 - var(--tw-space-y-reverse)))}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-\[var\(--color-border\)\]>:not(:last-child)){border-color:var(--color-border)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.rounded{border-radius:.25rem}.rounded-\[var\(--radius-md\)\]{border-radius:var(--radius-md)}.rounded-\[var\(--radius-sm\)\]{border-radius:var(--radius-sm)}.rounded-full{border-radius:2147483647px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l-\[3px\]{border-left-style:var(--tw-border-style);border-left-width:3px}.border-\[var\(--color-border\)\]{border-color:var(--color-border)}.border-\[var\(--color-error\)\]{border-color:var(--color-error)}.border-\[var\(--color-primary\)\]{border-color:var(--color-primary)}.border-transparent{border-color:#0000}.border-l-\[var\(--color-primary\)\]{border-left-color:var(--color-primary)}.bg-\[var\(--badge-app-bg\)\]{background-color:var(--badge-app-bg)}.bg-\[var\(--badge-comment-bg\)\]{background-color:var(--badge-comment-bg)}.bg-\[var\(--badge-create-bg\)\]{background-color:var(--badge-create-bg)}.bg-\[var\(--badge-group-bg\)\]{background-color:var(--badge-group-bg)}.bg-\[var\(--badge-match-bg\)\]{background-color:var(--badge-match-bg)}.bg-\[var\(--badge-mcp-bg\)\]{background-color:var(--badge-mcp-bg)}.bg-\[var\(--badge-other-bg\)\]{background-color:var(--badge-other-bg)}.bg-\[var\(--badge-personal-bg\)\]{background-color:var(--badge-personal-bg)}.bg-\[var\(--badge-refine-bg\)\]{background-color:var(--badge-refine-bg)}.bg-\[var\(--badge-shell-bg\)\]{background-color:var(--badge-shell-bg)}.bg-\[var\(--badge-user-input-bg\)\]{background-color:var(--badge-user-input-bg)}.bg-\[var\(--color-border\)\]{background-color:var(--color-border)}.bg-\[var\(--color-error-bg\)\]{background-color:var(--color-error-bg)}.bg-\[var\(--color-primary\)\]{background-color:var(--color-primary)}.bg-\[var\(--color-surface\)\]{background-color:var(--color-surface)}.bg-\[var\(--color-surface-elevated\)\]{background-color:var(--color-surface-elevated)}.bg-\[var\(--status-success-bg\)\]{background-color:var(--status-success-bg)}.bg-surface{background-color:var(--color-surface)}.bg-transparent{background-color:#0000}.object-contain{-o-object-fit:contain;object-fit:contain}.p-0{padding:var(--space-0)}.p-3{padding:var(--space-3)}.p-4{padding:var(--space-4)}.p-5{padding:var(--space-5)}.p-6{padding:var(--space-6)}.px-0\.5{padding-inline:calc(var(--spacing) * .5)}.px-2{padding-inline:var(--space-2)}.px-3{padding-inline:var(--space-3)}.px-4{padding-inline:var(--space-4)}.px-\[var\(--layout-main-padding-x\)\]{padding-inline:var(--layout-main-padding-x)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:var(--space-2)}.py-3{padding-block:var(--space-3)}.py-4{padding-block:var(--space-4)}.py-\[var\(--layout-main-padding-y\)\]{padding-block:var(--layout-main-padding-y)}.pt-3{padding-top:var(--space-3)}.pt-4{padding-top:var(--space-4)}.pb-0{padding-bottom:var(--space-0)}.pb-4{padding-bottom:var(--space-4)}.text-left{text-align:left}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.leading-5{--tw-leading:var(--space-5);line-height:var(--space-5)}.leading-6{--tw-leading:var(--space-6);line-height:var(--space-6)}.leading-none{--tw-leading:1;line-height:1}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.text-\[var\(--badge-app-fg\)\]{color:var(--badge-app-fg)}.text-\[var\(--badge-comment-fg\)\]{color:var(--badge-comment-fg)}.text-\[var\(--badge-create-fg\)\]{color:var(--badge-create-fg)}.text-\[var\(--badge-group-fg\)\]{color:var(--badge-group-fg)}.text-\[var\(--badge-match-fg\)\]{color:var(--badge-match-fg)}.text-\[var\(--badge-mcp-fg\)\]{color:var(--badge-mcp-fg)}.text-\[var\(--badge-other-fg\)\]{color:var(--badge-other-fg)}.text-\[var\(--badge-personal-fg\)\]{color:var(--badge-personal-fg)}.text-\[var\(--badge-refine-fg\)\]{color:var(--badge-refine-fg)}.text-\[var\(--badge-shell-fg\)\]{color:var(--badge-shell-fg)}.text-\[var\(--badge-user-input-fg\)\]{color:var(--badge-user-input-fg)}.text-\[var\(--color-error\)\]{color:var(--color-error)}.text-\[var\(--color-primary\)\]{color:var(--color-primary)}.text-\[var\(--color-text\)\]{color:var(--color-text)}.text-\[var\(--color-text-heading\)\]{color:var(--color-text-heading)}.text-\[var\(--color-text-muted\)\]{color:var(--color-text-muted)}.text-\[var\(--status-success-fg\)\]{color:var(--status-success-fg)}.text-text{color:var(--color-text)}.text-white{color:var(--color-white)}.lowercase{text-transform:lowercase}.uppercase{text-transform:uppercase}.italic{font-style:italic}.no-underline{text-decoration-line:none}.underline{text-decoration-line:underline}.opacity-50{opacity:.5}.ring-2{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-\[var\(--color-primary\)\]{--tw-ring-color:var(--color-primary)}.ring-offset-2{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.ring-offset-\[var\(--color-surface\)\]{--tw-ring-offset-color:var(--color-surface)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.outline-offset-2{outline-offset:2px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}@media (hover:hover){.hover\:bg-\[var\(--color-primary-hover\)\]:hover{background-color:var(--color-primary-hover)}.hover\:bg-\[var\(--color-surface\)\]:hover{background-color:var(--color-surface)}.hover\:bg-\[var\(--color-surface-elevated\)\]:hover{background-color:var(--color-surface-elevated)}.hover\:text-\[var\(--color-text\)\]:hover{color:var(--color-text)}.hover\:text-\[var\(--color-text-heading\)\]:hover{color:var(--color-text-heading)}.hover\:no-underline:hover{text-decoration-line:none}}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\:outline:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.focus-visible\:outline-2:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.focus-visible\:outline-offset-2:focus-visible{outline-offset:2px}.focus-visible\:outline-\[var\(--color-focus-ring\)\]:focus-visible{outline-color:var(--color-focus-ring)}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:opacity-60:disabled{opacity:.6}@media (width>=40rem){.sm\:col-span-2{grid-column:span 2/span 2}.sm\:inline{display:inline}.sm\:w-auto{width:auto}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:items-center{align-items:center}.sm\:items-start{align-items:flex-start}.sm\:justify-between{justify-content:space-between}}@media (width>=48rem){.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-\[1fr_auto\]{grid-template-columns:1fr auto}.md\:flex-col{flex-direction:column}.md\:items-end{align-items:flex-end}.md\:items-stretch{align-items:stretch}.md\:pb-0{padding-bottom:var(--space-0)}}@media (width>=64rem){.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (width>=80rem){.xl\:grid-cols-\[1\.3fr_1fr\]{grid-template-columns:1.3fr 1fr}.xl\:grid-cols-\[1\.6fr_1fr\]{grid-template-columns:1.6fr 1fr}.xl\:grid-cols-\[1\.45fr_1fr\]{grid-template-columns:1.45fr 1fr}}.\[\&_a\]\:text-\[var\(--color-primary\)\] a{color:var(--color-primary)}.\[\&_a\]\:underline a{text-decoration-line:underline}.\[\&_a\:focus-visible\]\:outline a:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.\[\&_a\:focus-visible\]\:outline-2 a:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.\[\&_a\:focus-visible\]\:outline-offset-2 a:focus-visible{outline-offset:2px}.\[\&_a\:focus-visible\]\:outline-\[var\(--color-focus-ring\)\] a:focus-visible{outline-color:var(--color-focus-ring)}.\[\&_a\:hover\]\:no-underline a:hover{text-decoration-line:none}.\[\&_blockquote\]\:border-l-4 blockquote{border-left-style:var(--tw-border-style);border-left-width:4px}.\[\&_blockquote\]\:border-\[var\(--color-border\)\] blockquote{border-color:var(--color-border)}.\[\&_blockquote\]\:pl-4 blockquote{padding-left:var(--space-4)}.\[\&_blockquote\]\:text-\[var\(--color-text-muted\)\] blockquote{color:var(--color-text-muted)}.\[\&_blockquote\]\:italic blockquote{font-style:italic}.\[\&_code\]\:rounded code{border-radius:.25rem}.\[\&_code\]\:bg-\[var\(--color-surface-elevated\)\] code{background-color:var(--color-surface-elevated)}.\[\&_code\]\:px-1\.5 code{padding-inline:calc(var(--spacing) * 1.5)}.\[\&_code\]\:py-0\.5 code{padding-block:calc(var(--spacing) * .5)}.\[\&_code\]\:font-mono code{font-family:var(--font-mono)}.\[\&_code\]\:text-xs code{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.\[\&_h1\]\:mt-4 h1{margin-top:var(--space-4)}.\[\&_h1\]\:mb-2 h1{margin-bottom:var(--space-2)}.\[\&_h1\]\:text-xl h1{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.\[\&_h1\]\:font-semibold h1{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.\[\&_h1\]\:text-\[var\(--color-text-heading\)\] h1{color:var(--color-text-heading)}.\[\&_h2\]\:mt-4 h2{margin-top:var(--space-4)}.\[\&_h2\]\:mb-2 h2{margin-bottom:var(--space-2)}.\[\&_h2\]\:text-lg h2{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.\[\&_h2\]\:font-semibold h2{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.\[\&_h2\]\:text-\[var\(--color-text-heading\)\] h2{color:var(--color-text-heading)}.\[\&_h3\]\:mt-3 h3{margin-top:var(--space-3)}.\[\&_h3\]\:mb-1 h3{margin-bottom:var(--space-1)}.\[\&_h3\]\:text-base h3{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.\[\&_h3\]\:font-medium h3{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.\[\&_h3\]\:text-\[var\(--color-text-heading\)\] h3{color:var(--color-text-heading)}.\[\&_li\]\:my-0\.5 li{margin-block:calc(var(--spacing) * .5)}.\[\&_ol\]\:my-3 ol{margin-block:var(--space-3)}.\[\&_ol\]\:pl-6 ol{padding-left:var(--space-6)}.\[\&_p\]\:mt-0 p{margin-top:var(--space-0)}.\[\&_p\+p\]\:mt-3 p+p{margin-top:var(--space-3)}.\[\&_p\:first-child\]\:mt-0 p:first-child{margin-top:var(--space-0)}.\[\&_pre\]\:my-3 pre{margin-block:var(--space-3)}.\[\&_pre\]\:overflow-x-auto pre{overflow-x:auto}.\[\&_pre\]\:rounded-\[var\(--radius-md\)\] pre{border-radius:var(--radius-md)}.\[\&_pre\]\:bg-\[var\(--color-surface-elevated\)\] pre{background-color:var(--color-surface-elevated)}.\[\&_pre\]\:p-3 pre{padding:var(--space-3)}.\[\&_pre\]\:font-mono pre{font-family:var(--font-mono)}.\[\&_pre\]\:text-sm pre{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.\[\&_pre\]\:whitespace-pre-wrap pre{white-space:pre-wrap}.\[\&_pre_code\]\:bg-transparent pre code{background-color:#0000}.\[\&_pre_code\]\:p-0 pre code{padding:var(--space-0)}.\[\&_pre_code\]\:text-inherit pre code{color:inherit}.\[\&_strong\]\:font-semibold strong{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.\[\&_strong\]\:text-\[var\(--color-text-heading\)\] strong{color:var(--color-text-heading)}.\[\&_table\]\:my-3 table{margin-block:var(--space-3)}.\[\&_table\]\:my-4 table{margin-block:var(--space-4)}.\[\&_table\]\:w-full table{width:100%}.\[\&_table\]\:border-collapse table{border-collapse:collapse}.\[\&_table\]\:text-left table{text-align:left}.\[\&_td\]\:border td{border-style:var(--tw-border-style);border-width:1px}.\[\&_td\]\:border-\[var\(--color-border\)\] td{border-color:var(--color-border)}.\[\&_td\]\:px-2 td{padding-inline:var(--space-2)}.\[\&_td\]\:px-3 td{padding-inline:var(--space-3)}.\[\&_td\]\:py-1\.5 td{padding-block:calc(var(--spacing) * 1.5)}.\[\&_td\]\:py-2 td{padding-block:var(--space-2)}.\[\&_th\]\:border th{border-style:var(--tw-border-style);border-width:1px}.\[\&_th\]\:border-\[var\(--color-border\)\] th{border-color:var(--color-border)}.\[\&_th\]\:bg-\[var\(--color-surface-elevated\)\] th{background-color:var(--color-surface-elevated)}.\[\&_th\]\:px-2 th{padding-inline:var(--space-2)}.\[\&_th\]\:px-3 th{padding-inline:var(--space-3)}.\[\&_th\]\:py-1\.5 th{padding-block:calc(var(--spacing) * 1.5)}.\[\&_th\]\:py-2 th{padding-block:var(--space-2)}.\[\&_th\]\:font-semibold th{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.\[\&_th\]\:text-\[var\(--color-text-heading\)\] th{color:var(--color-text-heading)}.\[\&_tr\]\:border-b tr{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.\[\&_tr\]\:border-\[var\(--color-border\)\] tr{border-color:var(--color-border)}.\[\&_tr\:last-child\]\:border-b-0 tr:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.\[\&_ul\]\:my-3 ul{margin-block:var(--space-3)}.\[\&_ul\]\:pl-6 ul{padding-left:var(--space-6)}}:root{--space-0:0;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.25rem;--space-6:1.5rem;--space-8:2rem;--space-10:2.5rem;--space-12:3rem;--font-sans:system-ui, sans-serif;--font-size-xs:.75rem;--font-size-sm:.875rem;--font-size-base:1rem;--font-size-lg:1.125rem;--font-size-xl:1.25rem;--font-size-2xl:1.5rem;--font-size-3xl:2rem;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--line-height-tight:1.25;--line-height-normal:1.5;--line-height-relaxed:1.6;--letter-spacing-uppercase:.1em;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--layout-main-max:80rem;--layout-main-narrow:48rem;--layout-main-wide:72rem;--layout-sidebar-width:12rem;--layout-touch-target:44px;--layout-main-padding-x:1.5rem;--layout-main-padding-y:1.5rem;--section-gap:var(--space-8);--card-padding:var(--space-6)}html,body{background:var(--color-surface);min-height:100%;color:var(--color-text)}html{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}body{margin:0}@media (width>=1024px){:root{--layout-main-padding-x:2rem}}:focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:2px}:root{--color-primary:#0d9488;--color-primary-hover:#0f766e;--color-primary-focus:#0d9488;--color-secondary:#64748b;--color-accent:#0ea5e9;--color-text:#1e293b;--color-text-heading:#0f172a;--color-text-muted:#64748b;--color-surface:#fff;--color-surface-elevated:#f8fafc;--color-border:#e2e8f0;--color-error:#dc2626;--color-error-bg:#fef2f2;--color-success:#16a34a;--color-warning:#d97706;--color-focus-ring:var(--color-primary);--badge-shell-bg:#fef3c7;--badge-shell-fg:#92400e;--badge-mcp-bg:#dbeafe;--badge-mcp-fg:#1e40af;--badge-user-input-bg:#ede9fe;--badge-user-input-fg:#5b21b6;--badge-comment-bg:#e2e8f0;--badge-comment-fg:#334155;--badge-match-bg:#dcfce7;--badge-match-fg:#166534;--badge-refine-bg:#dbeafe;--badge-refine-fg:#1e40af;--badge-create-bg:#fef3c7;--badge-create-fg:#92400e;--badge-personal-bg:#dcfce7;--badge-personal-fg:#166534;--badge-group-bg:#dbeafe;--badge-group-fg:#1e40af;--badge-app-bg:#fef3c7;--badge-app-fg:#92400e;--badge-other-bg:#f1f5f9;--badge-other-fg:#475569;--status-success-bg:#dcfce7;--status-success-fg:#166534}html[data-theme=dark]{--color-primary:#14b8a6;--color-primary-hover:#0d9488;--color-primary-focus:#2dd4bf;--color-secondary:#94a3b8;--color-accent:#38bdf8;--color-text:#e2e8f0;--color-text-heading:#f8fafc;--color-text-muted:#94a3b8;--color-surface:#0f172a;--color-surface-elevated:#1e293b;--color-border:#334155;--color-error:#f87171;--color-error-bg:#7f1d1d;--color-success:#4ade80;--color-warning:#fbbf24;--color-focus-ring:#2dd4bf;--badge-shell-bg:#78350f;--badge-shell-fg:#fde68a;--badge-mcp-bg:#1e3a8a;--badge-mcp-fg:#bfdbfe;--badge-user-input-bg:#4c1d95;--badge-user-input-fg:#ddd6fe;--badge-comment-bg:#334155;--badge-comment-fg:#cbd5e1;--badge-match-bg:#14532d;--badge-match-fg:#bbf7d0;--badge-refine-bg:#1e3a8a;--badge-refine-fg:#bfdbfe;--badge-create-bg:#78350f;--badge-create-fg:#fde68a;--badge-personal-bg:#14532d;--badge-personal-fg:#bbf7d0;--badge-group-bg:#1e3a8a;--badge-group-fg:#bfdbfe;--badge-app-bg:#78350f;--badge-app-fg:#fde68a;--badge-other-bg:#334155;--badge-other-fg:#cbd5e1;--status-success-bg:#14532d;--status-success-fg:#bbf7d0}.skip-link{top:-100%;left:var(--space-4);padding:var(--space-2) var(--space-4);background:var(--color-primary);color:#fff;font-weight:var(--font-weight-medium);z-index:100;border-radius:var(--radius-md);position:absolute}.skip-link:focus{top:var(--space-4)}.skip-link:focus:not(:focus-visible){top:-100%}.skip-link:focus-visible{top:var(--space-4)}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@keyframes pulse{50%{opacity:.5}}
@@ -26,12 +26,12 @@
26
26
  root.style.colorScheme = theme;
27
27
  })();
28
28
  </script>
29
- <script type="module" crossorigin src="/ui/assets/index-C77BzNbG.js"></script>
29
+ <script type="module" crossorigin src="/ui/assets/index-CKityaQ1.js"></script>
30
30
  <link rel="modulepreload" crossorigin href="/ui/assets/rolldown-runtime-hePW80VL.js">
31
31
  <link rel="modulepreload" crossorigin href="/ui/assets/react-BvB9BS1T.js">
32
32
  <link rel="modulepreload" crossorigin href="/ui/assets/tiptap-CCr8bvo1.js">
33
33
  <link rel="modulepreload" crossorigin href="/ui/assets/vendor-xESPQGR9.js">
34
- <link rel="stylesheet" crossorigin href="/ui/assets/index-CSUUmfdT.css">
34
+ <link rel="stylesheet" crossorigin href="/ui/assets/index-Dq6apLxZ.css">
35
35
  </head>
36
36
  <body>
37
37
  <div id="root"></div>
@@ -4,6 +4,13 @@
4
4
  * Used by both logger.ts and structured-logger.ts so JSON shape is identical.
5
5
  */
6
6
  import pino from 'pino';
7
+ /**
8
+ * Logs go to stderr whenever stdout is a data channel — the stdio MCP transport
9
+ * (protocol frames) and the CLI process (`SQUADRULES_LOG_STDERR=1`, set by the CLI
10
+ * prelude in `cli/log-sink-prelude.ts` so data-command payloads stay parseable, e.g.
11
+ * `activate ... | jq`). Otherwise (http server) logs go to stdout, as containers expect.
12
+ */
13
+ export declare function shouldLogToStderr(transportType: 'stdio' | 'http', forceStderr: boolean): boolean;
7
14
  /**
8
15
  * Returns the shared Pino logger. Creates it on first call.
9
16
  */
@@ -1 +1 @@
1
- {"version":3,"file":"log-core.d.ts","sourceRoot":"","sources":["../../src/utils/log-core.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,IAAI,MAAM,MAAM,CAAC;AAwExB;;GAEG;AACH,wBAAgB,aAAa,IAAI,IAAI,CAAC,MAAM,CAK3C"}
1
+ {"version":3,"file":"log-core.d.ts","sourceRoot":"","sources":["../../src/utils/log-core.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,IAAI,MAAM,MAAM,CAAC;AAcxB;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,aAAa,EAAE,OAAO,GAAG,MAAM,EAC/B,WAAW,EAAE,OAAO,GACnB,OAAO,CAET;AAgED;;GAEG;AACH,wBAAgB,aAAa,IAAI,IAAI,CAAC,MAAM,CAK3C"}
@@ -14,8 +14,17 @@ const REDACT_PATHS = [
14
14
  'req.headers.cookie',
15
15
  'res.headers["set-cookie"]'
16
16
  ];
17
- function textFormatStream(transportType) {
18
- const out = transportType === 'stdio' ? process.stderr : process.stdout;
17
+ /**
18
+ * Logs go to stderr whenever stdout is a data channel — the stdio MCP transport
19
+ * (protocol frames) and the CLI process (`SQUADRULES_LOG_STDERR=1`, set by the CLI
20
+ * prelude in `cli/log-sink-prelude.ts` so data-command payloads stay parseable, e.g.
21
+ * `activate ... | jq`). Otherwise (http server) logs go to stdout, as containers expect.
22
+ */
23
+ export function shouldLogToStderr(transportType, forceStderr) {
24
+ return transportType === 'stdio' || forceStderr;
25
+ }
26
+ function textFormatStream(toStderr) {
27
+ const out = toStderr ? process.stderr : process.stdout;
19
28
  return new Writable({
20
29
  write(chunk, _enc, cb) {
21
30
  try {
@@ -40,9 +49,10 @@ function textFormatStream(transportType) {
40
49
  });
41
50
  }
42
51
  function createBaseLogger() {
52
+ const toStderr = shouldLogToStderr(TRANSPORT_TYPE, process.env['SQUADRULES_LOG_STDERR'] === '1');
43
53
  const dest = LOG_FORMAT === 'text'
44
- ? textFormatStream(TRANSPORT_TYPE)
45
- : TRANSPORT_TYPE === 'stdio'
54
+ ? textFormatStream(toStderr)
55
+ : toStderr
46
56
  ? process.stderr
47
57
  : process.stdout;
48
58
  const serializers = {
@@ -1 +1 @@
1
- {"version":3,"file":"log-core.js","sourceRoot":"","sources":["../../src/utils/log-core.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAErE,MAAM,YAAY,GAAG;IACnB,2BAA2B;IAC3B,YAAY;IACZ,UAAU;IACV,UAAU;IACV,oBAAoB;IACpB,2BAA2B;CAC5B,CAAC;AAEF,SAAS,gBAAgB,CAAC,aAA+B;IACvD,MAAM,GAAG,GAAG,aAAa,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;IACxE,OAAO,IAAI,QAAQ,CAAC;QAClB,KAAK,CAAC,KAAa,EAAE,IAAI,EAAE,EAAE;YAC3B,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;gBAC9B,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;oBACjB,EAAE,EAAE,CAAC;oBACL,OAAO;gBACT,CAAC;gBACD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAA4B,CAAC;gBACzD,MAAM,IAAI,GAAG,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;gBACxF,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;gBACvC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,CAAC;gBACnF,MAAM,KAAK,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBACjD,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAC3C,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,MAAM,KAAK,KAAK,GAAG,IAAI,CAAC,CAAC;YAC7C,CAAC;YAAC,MAAM,CAAC;gBACP,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC9B,CAAC;YACD,EAAE,EAAE,CAAC;QACP,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED,SAAS,gBAAgB;IACvB,MAAM,IAAI,GAAG,UAAU,KAAK,MAAM;QAChC,CAAC,CAAC,gBAAgB,CAAC,cAAc,CAAC;QAClC,CAAC,CAAC,cAAc,KAAK,OAAO;YAC1B,CAAC,CAAC,OAAO,CAAC,MAAM;YAChB,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;IAErB,MAAM,WAAW,GAAsC;QACrD,GAAG,CAAC,GAAY;YACd,OAAO;gBACL,MAAM,EAAE,GAAG,EAAE,MAAM;gBACnB,GAAG,EAAE,GAAG,EAAE,GAAG;gBACb,OAAO,EAAE;oBACP,YAAY,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,YAAY,CAAC;oBAC1C,cAAc,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,cAAc,CAAC;iBAC/C;aACF,CAAC;QACJ,CAAC;QACD,GAAG,CAAC,GAAa;YACf,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC;QACzC,CAAC;KACF,CAAC;IAEF,OAAO,IAAI,CAAC;QACV,KAAK,EAAE,SAAS;QAChB,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO;QACxC,MAAM,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE;QACrD,WAAW;KACZ,EAAE,IAAI,CAAC,CAAC;AACX,CAAC;AAED,IAAI,kBAAkB,GAAuB,IAAI,CAAC;AAElD;;GAEG;AACH,MAAM,UAAU,aAAa;IAC3B,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACxB,kBAAkB,GAAG,gBAAgB,EAAE,CAAC;IAC1C,CAAC;IACD,OAAO,kBAAkB,CAAC;AAC5B,CAAC"}
1
+ {"version":3,"file":"log-core.js","sourceRoot":"","sources":["../../src/utils/log-core.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAErE,MAAM,YAAY,GAAG;IACnB,2BAA2B;IAC3B,YAAY;IACZ,UAAU;IACV,UAAU;IACV,oBAAoB;IACpB,2BAA2B;CAC5B,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAC/B,aAA+B,EAC/B,WAAoB;IAEpB,OAAO,aAAa,KAAK,OAAO,IAAI,WAAW,CAAC;AAClD,CAAC;AAED,SAAS,gBAAgB,CAAC,QAAiB;IACzC,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;IACvD,OAAO,IAAI,QAAQ,CAAC;QAClB,KAAK,CAAC,KAAa,EAAE,IAAI,EAAE,EAAE;YAC3B,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;gBAC9B,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;oBACjB,EAAE,EAAE,CAAC;oBACL,OAAO;gBACT,CAAC;gBACD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAA4B,CAAC;gBACzD,MAAM,IAAI,GAAG,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;gBACxF,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;gBACvC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,CAAC;gBACnF,MAAM,KAAK,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBACjD,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAC3C,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,MAAM,KAAK,KAAK,GAAG,IAAI,CAAC,CAAC;YAC7C,CAAC;YAAC,MAAM,CAAC;gBACP,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC9B,CAAC;YACD,EAAE,EAAE,CAAC;QACP,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED,SAAS,gBAAgB;IACvB,MAAM,QAAQ,GAAG,iBAAiB,CAChC,cAAc,EACd,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,KAAK,GAAG,CAC7C,CAAC;IACF,MAAM,IAAI,GAAG,UAAU,KAAK,MAAM;QAChC,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC;QAC5B,CAAC,CAAC,QAAQ;YACR,CAAC,CAAC,OAAO,CAAC,MAAM;YAChB,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;IAErB,MAAM,WAAW,GAAsC;QACrD,GAAG,CAAC,GAAY;YACd,OAAO;gBACL,MAAM,EAAE,GAAG,EAAE,MAAM;gBACnB,GAAG,EAAE,GAAG,EAAE,GAAG;gBACb,OAAO,EAAE;oBACP,YAAY,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,YAAY,CAAC;oBAC1C,cAAc,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,cAAc,CAAC;iBAC/C;aACF,CAAC;QACJ,CAAC;QACD,GAAG,CAAC,GAAa;YACf,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC;QACzC,CAAC;KACF,CAAC;IAEF,OAAO,IAAI,CAAC;QACV,KAAK,EAAE,SAAS;QAChB,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO;QACxC,MAAM,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE;QACrD,WAAW;KACZ,EAAE,IAAI,CAAC,CAAC;AACX,CAAC;AAED,IAAI,kBAAkB,GAAuB,IAAI,CAAC;AAElD;;GAEG;AACH,MAAM,UAAU,aAAa;IAC3B,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACxB,kBAAkB,GAAG,gBAAgB,EAAE,CAAC;IAC1C,CAAC;IACD,OAAO,kBAAkB,CAAC;AAC5B,CAAC"}
@@ -27,6 +27,12 @@ export interface SpaceContext {
27
27
  */
28
28
  activateSpaceScope?: string[];
29
29
  }
30
+ /**
31
+ * Single-tenant default context (personal write space + Squadrules app read space).
32
+ * Used when AUTH is disabled and by the CLI local backend, which always runs
33
+ * auth-disabled regardless of ambient AUTH_ENABLED so local writes land in personal.
34
+ */
35
+ export declare function defaultSpaceContext(): SpaceContext;
30
36
  /**
31
37
  * Run a function with the given space context stored in AsyncLocalStorage.
32
38
  * Used by HTTP auth middleware so Redis and Qdrant helpers can read space without request.
@@ -1 +1 @@
1
- {"version":3,"file":"tenant-context.d.ts","sourceRoot":"","sources":["../../src/utils/tenant-context.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAaH,sGAAsG;AACtG,eAAO,MAAM,gBAAgB,kBAAkB,CAAC;AAEhD,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,mBAAmB,EAAE,MAAM,CAAC;IAC5B;;;;OAIG;IACH,eAAe,EAAE,MAAM,CAAC;IACxB,8EAA8E;IAC9E,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC/B;AA0CD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,GAAG,EAAE,YAAY,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAExE;AAED;;;;;GAKG;AACH,wBAAsB,wBAAwB,CAAC,CAAC,EAAE,GAAG,EAAE,YAAY,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAQrG;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,IAAI,YAAY,CAIzD;AAED,gHAAgH;AAChH,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAED,gFAAgF;AAChF,wBAAgB,uBAAuB,IAAI,MAAM,CAGhD;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,EAAE,CAS5C;AAED;;;GAGG;AACH,wBAAsB,yBAAyB,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,GAAG,SAAS,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAuBnH;AAuED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,OAAO,CAAC,EAAE;IACxC,IAAI,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACvE,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;CACtC,GAAG,YAAY,CA8Bf;AAED;;;;GAIG;AACH,wBAAsB,0BAA0B,CAAC,CAAC,EAChD,OAAO,EAAE,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC,CAAC,CAAC,EAC9C,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACnB,OAAO,CAAC,CAAC,CAAC,CAEZ;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,CAAC,EAAE,GAAG,GAAG,MAAM,CAGjD"}
1
+ {"version":3,"file":"tenant-context.d.ts","sourceRoot":"","sources":["../../src/utils/tenant-context.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAaH,sGAAsG;AACtG,eAAO,MAAM,gBAAgB,kBAAkB,CAAC;AAEhD,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,mBAAmB,EAAE,MAAM,CAAC;IAC5B;;;;OAIG;IACH,eAAe,EAAE,MAAM,CAAC;IACxB,8EAA8E;IAC9E,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC/B;AAeD;;;;GAIG;AACH,wBAAgB,mBAAmB,IAAI,YAAY,CAYlD;AAeD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,GAAG,EAAE,YAAY,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAExE;AAED;;;;;GAKG;AACH,wBAAsB,wBAAwB,CAAC,CAAC,EAAE,GAAG,EAAE,YAAY,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAQrG;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,IAAI,YAAY,CAIzD;AAED,gHAAgH;AAChH,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAED,gFAAgF;AAChF,wBAAgB,uBAAuB,IAAI,MAAM,CAGhD;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,EAAE,CAS5C;AAED;;;GAGG;AACH,wBAAsB,yBAAyB,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,GAAG,SAAS,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAuBnH;AAuED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,OAAO,CAAC,EAAE;IACxC,IAAI,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACvE,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;CACtC,GAAG,YAAY,CA8Bf;AAED;;;;GAIG;AACH,wBAAsB,0BAA0B,CAAC,CAAC,EAChD,OAAO,EAAE,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC,CAAC,CAAC,EAC9C,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACnB,OAAO,CAAC,CAAC,CAAC,CAEZ;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,CAAC,EAAE,GAAG,GAAG,MAAM,CAGjD"}
@@ -22,7 +22,12 @@ const NO_CONTEXT_SENTINEL = {
22
22
  requestId: ''
23
23
  };
24
24
  const spaceStorage = new AsyncLocalStorage();
25
- function defaultSpaceContext() {
25
+ /**
26
+ * Single-tenant default context (personal write space + Squadrules app read space).
27
+ * Used when AUTH is disabled and by the CLI local backend, which always runs
28
+ * auth-disabled regardless of ambient AUTH_ENABLED so local writes land in personal.
29
+ */
30
+ export function defaultSpaceContext() {
26
31
  const personalSpaceId = defaultPersonalSpaceIdForNoAuth();
27
32
  const appSpaceId = SQUADRULES_APP_SPACE_ID;
28
33
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"tenant-context.js","sourceRoot":"","sources":["../../src/utils/tenant-context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tenant-context.js","sourceRoot":"","sources":["../../src/utils/tenant-context.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@squadrules/mcp",
3
- "version": "5.4.2",
3
+ "version": "5.5.1",
4
4
  "description": "SquadRules MCP server for agent automation: persistent memory and deterministic workflow execution for AI agents and chats",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -1 +0,0 @@
1
- {"version":3,"file":"attest.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/attest.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA0DpD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"attest.js","sourceRoot":"","sources":["../../../src/cli/commands/attest.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAE/D,MAAM,UAAU,aAAa,CAAC,OAAgB;IAC1C,OAAO;SACF,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,2DAA2D,CAAC;SACxE,QAAQ,CAAC,OAAO,EAAE,+CAA+C,CAAC;SAClE,QAAQ,CAAC,WAAW,EAAE,6BAA6B,CAAC;SACpD,QAAQ,CAAC,YAAY,EAAE,sDAAsD,CAAC;SAC9E,MAAM,CAAC,kBAAkB,EAAE,2CAA2C,CAAC;SACvE,MAAM,CAAC,iBAAiB,EAAE,6CAA6C,CAAC;SACxE,MAAM,CAAC,4BAA4B,EAAE,8CAA8C,CAAC;SACpF,MAAM,CAAC,iBAAiB,EAAE,0DAA0D,CAAC;SACrF,MAAM,CAAC,KAAK,EACT,GAAW,EACX,OAAe,EACf,QAAgB,EAChB,OAAmF,EACrF,EAAE;QACA,IAAI,CAAC;YACD,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBACjD,UAAU,CAAC,wCAAwC,CAAC,CAAC;gBACrD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAChB,OAAO;YACX,CAAC;YAED,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAClF,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;gBACtC,UAAU,CAAC,0BAA0B,CAAC,CAAC;gBACvC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAChB,OAAO;YACX,CAAC;YAED,MAAM,MAAM,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;YAEhD,MAAM,aAAa,GAAoF,EAAE,CAAC;YAC1G,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACtB,aAAa,CAAC,KAAK,GAAG,KAAK,CAAC;YAChC,CAAC;YACD,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;gBAChB,aAAa,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;YACxC,CAAC;YACD,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;gBACxB,aAAa,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;YACxD,CAAC;YACD,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;gBAChB,aAAa,CAAC,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC;YAC7C,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,MAAM,CAChC,GAAG,EACH,OAAgC,EAChC,QAAQ,EACR,aAAa,CAChB,CAAC;YACF,MAAM,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;YAC/C,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC9E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,cAAc,CAAC,KAAK,EAAE,CAAC,iBAAiB,EAAE,CAAC,CAAC;QAChD,CAAC;IACL,CAAC,CAAC,CAAC;AACX,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"begin.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/begin.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiBrD"}
@@ -1,27 +0,0 @@
1
- /**
2
- * forward command
3
- */
4
- import { handleApiError, isBrowserDisabled } from '../auth-error.js';
5
- import { writeJson } from '../output.js';
6
- import { formatNextCallBlock } from '../format-next-call.js';
7
- import { createClientFromProgram } from '../client-factory.js';
8
- export function forwardCommand(program) {
9
- program
10
- .command('forward')
11
- .description('Run the first or next SQUADRULES adapter layer')
12
- .argument('<uri>', 'SQUADRULES adapter or layer URI')
13
- .option('--solution <json>', 'Forward solution as JSON string')
14
- .action(async (uri, options) => {
15
- try {
16
- const client = createClientFromProgram(program);
17
- const solution = options.solution ? JSON.parse(options.solution) : undefined;
18
- const response = await client.forward(uri, solution);
19
- const nextCall = formatNextCallBlock(response);
20
- writeJson(nextCall ? { ...response, cli_next_call: nextCall } : response);
21
- }
22
- catch (error) {
23
- handleApiError(error, !isBrowserDisabled());
24
- }
25
- });
26
- }
27
- //# sourceMappingURL=begin.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"begin.js","sourceRoot":"","sources":["../../../src/cli/commands/begin.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAE/D,MAAM,UAAU,cAAc,CAAC,OAAgB;IAC3C,OAAO;SACF,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,gDAAgD,CAAC;SAC7D,QAAQ,CAAC,OAAO,EAAE,iCAAiC,CAAC;SACpD,MAAM,CAAC,mBAAmB,EAAE,iCAAiC,CAAC;SAC9D,MAAM,CAAC,KAAK,EAAE,GAAW,EAAE,OAA8B,EAAE,EAAE;QAC1D,IAAI,CAAC;YACD,MAAM,MAAM,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;YAChD,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC7E,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;YACrD,MAAM,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;YAC/C,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC9E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,cAAc,CAAC,KAAK,EAAE,CAAC,iBAAiB,EAAE,CAAC,CAAC;QAChD,CAAC;IACL,CAAC,CAAC,CAAC;AACX,CAAC"}