@lunora/config 1.0.0-alpha.1 → 1.0.0-alpha.11

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 (21) hide show
  1. package/dist/index.d.mts +66 -1
  2. package/dist/index.d.ts +66 -1
  3. package/dist/index.mjs +12 -10
  4. package/dist/packem_shared/ACCENT-DW1XJn8i.mjs +40 -0
  5. package/dist/packem_shared/LunoraReporter-Ci-bDCK9.mjs +70 -0
  6. package/dist/packem_shared/{PACKAGE_SECRETS_REGISTRY-CySy5vR_.mjs → PACKAGE_SECRETS_REGISTRY-B8t_SdoZ.mjs} +9 -1
  7. package/dist/packem_shared/{injectRemoteFlags-C-WZAKLY.mjs → REMOTE_ELIGIBLE_KEYS-BC7_e9Bz.mjs} +1 -1
  8. package/dist/packem_shared/{REQUIRED_COMPATIBILITY_DATE-Dd1suoit.mjs → REQUIRED_COMPATIBILITY_DATE-DRSNSOOp.mjs} +2 -2
  9. package/dist/packem_shared/{buildPackageSecretsBlock-S74dgmwy.mjs → buildPackageSecretsBlock-DNzNRu7T.mjs} +4 -3
  10. package/dist/packem_shared/{discoverSchemaInfo-DWtypqpP.mjs → discoverSchemaInfo-BB-CKlTK.mjs} +1 -1
  11. package/dist/packem_shared/{inferLunoraBindings-0W3eRdIP.mjs → inferLunoraBindings-DIku9mTN.mjs} +8 -8
  12. package/dist/packem_shared/{reconcileWranglerBindings-ByJk3yLU.mjs → reconcileWranglerBindings-DTHmqTbL.mjs} +1 -1
  13. package/dist/studio-host/index.mjs +4 -4
  14. package/package.json +5 -4
  15. /package/dist/packem_shared/{interpretRemote-CtcIcB5-.mjs → LUNORA_CONFIG_FILE-CtcIcB5-.mjs} +0 -0
  16. /package/dist/packem_shared/{formatLunoraEvent-D2fDeGB6.mjs → LUNORA_EVENT_SOURCE-D2fDeGB6.mjs} +0 -0
  17. /package/dist/packem_shared/{handlePolicyScaffoldRequest-CiC2IGKx.mjs → POLICY_SCAFFOLD_ENDPOINT-CiC2IGKx.mjs} +0 -0
  18. /package/dist/packem_shared/{handleSchemaEditRequest-Df-Wrix-.mjs → SCHEMA_EDIT_ENDPOINT-Df-Wrix-.mjs} +0 -0
  19. /package/dist/packem_shared/{handleSeedRequest-DVCjaGO-.mjs → SEED_ENDPOINT-DVCjaGO-.mjs} +0 -0
  20. /package/dist/packem_shared/{findWranglerFile-DwSuC-Kn.mjs → WRANGLER_FILES-DwSuC-Kn.mjs} +0 -0
  21. /package/dist/packem_shared/{studioAssetsStamp-Csk5RS4E.mjs → loadStudioAssets-Csk5RS4E.mjs} +0 -0
package/dist/index.d.mts CHANGED
@@ -288,6 +288,12 @@ declare const LUNORA_EVENT_SOURCE = "lunora";
288
288
  * — so the caller passes the original line through untouched. Pure and total.
289
289
  */
290
290
  declare const formatLunoraEvent: (line: string) => LunoraFormattedLine | undefined;
291
+ declare class LunoraReporter {
292
+ #private;
293
+ setStdout(stdout: NodeJS.WriteStream): void;
294
+ setStderr(stderr: NodeJS.WriteStream): void;
295
+ log(meta: unknown): void;
296
+ }
291
297
  /**
292
298
  * Per-package secret-requirements registry for `.dev.vars` scaffolding.
293
299
  *
@@ -332,6 +338,15 @@ interface SecretEntry {
332
338
  */
333
339
  placeholderValue: string;
334
340
  }
341
+ /**
342
+ * Secrets every Lunora project needs regardless of which capability packages are
343
+ * installed — scaffolded into `.dev.vars` always. `LUNORA_ADMIN_TOKEN` is the
344
+ * bearer the local Studio uses to call the worker's admin endpoints (the data
345
+ * browser, schema edits) in dev; the worker reads the SAME `.dev.vars` value via
346
+ * its admin gate, so both agree and the Studio authenticates without a prompt.
347
+ * Without it, every `/_lunora/admin/*` call is `ADMIN_FORBIDDEN` (403).
348
+ */
349
+
335
350
  /**
336
351
  * The canonical registry of per-package secret requirements.
337
352
  *
@@ -891,6 +906,56 @@ interface DiscoverSchemaInfoResult {
891
906
  * parse failure is a warning (validator) or simply ignorable (inference).
892
907
  */
893
908
  declare const discoverSchemaInfo: (projectRoot: string, schemaDirectory: string) => DiscoverSchemaInfoResult;
909
+ /**
910
+ * A badge: the short colored label that prefixes a line. `bg`/`fg` are hex so the
911
+ * same value drives both colorize's `bgHex().hex()` and the tui `<Text>` props.
912
+ */
913
+ interface BadgeSpec {
914
+ bg: `#${string}`;
915
+ fg: `#${string}`;
916
+ text: string;
917
+ }
918
+ /** Lunora purple — the accent shared with the CLI prompt frames. */
919
+ declare const ACCENT: `#${string}`;
920
+ /** Standard log-level badge names (the restyled base output). */
921
+ type LevelBadgeName = "debug" | "error" | "info" | "success" | "warn";
922
+ /** Step-phase badge names (the create-astro-style flow transcript). */
923
+ type StepBadgeName = "add" | "deps" | "dir" | "git" | "lunora" | "next" | "tmpl";
924
+ type BadgeName = LevelBadgeName | StepBadgeName;
925
+ /** The ordered step-phase names, used to register custom pail log types. */
926
+ declare const STEP_BADGE_NAMES: ReadonlyArray<StepBadgeName>;
927
+ /**
928
+ * Every badge, keyed by name. Levels get their conventional colors (red/amber/
929
+ * green/blue/grey); step phases follow create-astro's green→purple→cyan rhythm.
930
+ */
931
+ declare const BADGES: Record<BadgeName, BadgeSpec>;
932
+ /**
933
+ * Luna, the mascot: the folklore rabbit-in-the-moon — a bunny tucked inside the
934
+ * moon disc. Pure ASCII so it renders the same everywhere (including piped logs).
935
+ * The CLI signs off the `init` flow with it, the way create-astro closes with
936
+ * Houston.
937
+ */
938
+ declare const LUNA_NAME = "Luna";
939
+ declare const LUNA_SIGNOFF = "Safe travels, voyager.";
940
+ declare const LUNA_BUNNY: string;
941
+ /**
942
+ * {@link LUNA_BUNNY} with its leading newline stripped, ready to render inline
943
+ * (beside the name + sign-off). Both render paths — the tui mascot frame and the
944
+ * pail off-TTY fallback — use this so neither re-implements the strip.
945
+ */
946
+ declare const LUNA_ART: string;
947
+ /** The colored part of a badge — the word with one space of padding each side. */
948
+ declare const padBadge: (text: string) => string;
949
+ /** Leading spaces that right-align a badge's box within the gutter. */
950
+ declare const badgeLead: (text: string) => string;
951
+ /** Total columns a rendered badge column occupies (lead + box), constant across badges. */
952
+ declare const BADGE_COLUMN_WIDTH: number;
953
+ /** Columns a rendered badge occupies — the gutter-aligned column width. */
954
+ declare const badgeWidth: (_spec: BadgeSpec) => number;
955
+ /** Paint a badge as an ANSI string (the non-tui path): right-aligning spaces + the colored box. */
956
+ declare const paintBadge: (spec: BadgeSpec) => string;
957
+ /** Dim continuation text (a step's chosen answer, shown under the question). */
958
+ declare const paintAnswer: (text: string) => string;
894
959
  /** Candidate wrangler config filenames, in the order every consumer probes them. */
895
960
  declare const WRANGLER_FILES: readonly ["wrangler.jsonc", "wrangler.json"];
896
961
  /** Locate the project's wrangler config, or `undefined` when none exists. */
@@ -1072,4 +1137,4 @@ interface WranglerProjectValidationResult {
1072
1137
  * `{ problems, wranglerPath }` shape plus the structured `report`.
1073
1138
  */
1074
1139
  declare const validateWranglerProject: (options: WranglerProjectValidationOptions) => WranglerProjectValidationResult;
1075
- export { AGENT_RULES_DIR, AGENT_RULES_HINT, AGENT_RULES_HINT_ENV, type AddIndexEdit, type AddOptionalColumnEdit, type AddTableEdit, type AdditiveEdit, type AgentRulesStatus, type ApplyEditResult, type ApplyFailureReason, type AugmentPlan, DEV_VARS_EXAMPLE_FILE, DEV_VARS_FILE, DEV_VARS_KEY_PATTERN, type DestructiveEdit, type DetectedFramework, type DiscoverContainerInfoResult, type DiscoverSchemaInfoResult, type DiscoverWorkflowInfoResult, type EnsureDevVariablesDeps, type EnsureDevVariablesResult, type EnsureDevVariablesStatus, type ExportGap, type FrameworkClass, type FrameworkDetection, type InferOptions, type InferredBindings, type InferredContainer, type InferredWorkflow, LINKED_PROJECT_DIR, LINKED_PROJECT_FILE, LUNORA_CONFIG_FILE, LUNORA_EVENT_SOURCE, LUNORA_SKILL_NAMES, type LinkedProject, type LunoraFormattedLine, type LunoraLineLevel, type LunoraProjectConfig, type MaterializeOptions, type MaterializeResult, type MultiSelectOption, PACKAGE_SECRETS_REGISTRY, type ParseSchemaResult, REMOTE_ELIGIBLE_KEYS, REQUIRED_COMPATIBILITY_DATE, REQUIRED_FLAG, ROOT_SKILL_NAME, type ReadWranglerResult, type ReconcileBindingsResult, type RemoteBindingPlan, type RemoteEnableInputs, type RemotePreference, type RemoteWranglerShape, type ScaffoldPlan, type SchemaColumn, type SchemaEdit, type SchemaIndex, type SchemaInfo, type SchemaTable, type SecretEntry, type SelectOption, type TailConsumer, WRANGLER_FILES, type WranglerConfig, type WranglerContainerEntry, type WranglerProjectValidationOptions, type WranglerProjectValidationResult, type WranglerValidationReport, type WranglerWorkflowEntry, applyAdditiveEdit, buildPackageSecretsBlock, claimAgentRulesHint, classifyEdit, createConfirm, detectAgentRules, detectFramework, discoverContainerInfo, discoverSchemaInfo, discoverWorkflowInfo, ensureDevVariables, ensureDevVariablesExample as ensureDevVarsExample, findWranglerFile, formatLunoraEvent, inferLunoraBindings, injectRemoteFlags, interpretRemote, isInteractive, isPlaceholderValue, isRemoteEnvEnabled, materializeRemoteWranglerConfig, packageNamesFromBindings, parseDevVariableEntries, parseSchema, planDevVariablesAugment, planDevVariablesScaffold, planRemoteBindings, promptMultiSelect, promptSelect, promptYesNo, readLinkedProject, readProjectRemotePreference, readWranglerJsonc, reconcileWranglerBindings, resolveRemoteEnabled, secretsForPackages, validateWrangler, validateWranglerConfig, validateWranglerProject, withTailConsumer, writeLinkedProject };
1140
+ export { ACCENT, AGENT_RULES_DIR, AGENT_RULES_HINT, AGENT_RULES_HINT_ENV, type AddIndexEdit, type AddOptionalColumnEdit, type AddTableEdit, type AdditiveEdit, type AgentRulesStatus, type ApplyEditResult, type ApplyFailureReason, type AugmentPlan, BADGES, BADGE_COLUMN_WIDTH, type BadgeName, type BadgeSpec, DEV_VARS_EXAMPLE_FILE, DEV_VARS_FILE, DEV_VARS_KEY_PATTERN, type DestructiveEdit, type DetectedFramework, type DiscoverContainerInfoResult, type DiscoverSchemaInfoResult, type DiscoverWorkflowInfoResult, type EnsureDevVariablesDeps, type EnsureDevVariablesResult, type EnsureDevVariablesStatus, type ExportGap, type FrameworkClass, type FrameworkDetection, type InferOptions, type InferredBindings, type InferredContainer, type InferredWorkflow, LINKED_PROJECT_DIR, LINKED_PROJECT_FILE, LUNA_ART, LUNA_BUNNY, LUNA_NAME, LUNA_SIGNOFF, LUNORA_CONFIG_FILE, LUNORA_EVENT_SOURCE, LUNORA_SKILL_NAMES, type LevelBadgeName, type LinkedProject, type LunoraFormattedLine, type LunoraLineLevel, type LunoraProjectConfig, LunoraReporter, type MaterializeOptions, type MaterializeResult, type MultiSelectOption, PACKAGE_SECRETS_REGISTRY, type ParseSchemaResult, REMOTE_ELIGIBLE_KEYS, REQUIRED_COMPATIBILITY_DATE, REQUIRED_FLAG, ROOT_SKILL_NAME, type ReadWranglerResult, type ReconcileBindingsResult, type RemoteBindingPlan, type RemoteEnableInputs, type RemotePreference, type RemoteWranglerShape, STEP_BADGE_NAMES, type ScaffoldPlan, type SchemaColumn, type SchemaEdit, type SchemaIndex, type SchemaInfo, type SchemaTable, type SecretEntry, type SelectOption, type StepBadgeName, type TailConsumer, WRANGLER_FILES, type WranglerConfig, type WranglerContainerEntry, type WranglerProjectValidationOptions, type WranglerProjectValidationResult, type WranglerValidationReport, type WranglerWorkflowEntry, applyAdditiveEdit, badgeLead, badgeWidth, buildPackageSecretsBlock, claimAgentRulesHint, classifyEdit, createConfirm, detectAgentRules, detectFramework, discoverContainerInfo, discoverSchemaInfo, discoverWorkflowInfo, ensureDevVariables, ensureDevVariablesExample as ensureDevVarsExample, findWranglerFile, formatLunoraEvent, inferLunoraBindings, injectRemoteFlags, interpretRemote, isInteractive, isPlaceholderValue, isRemoteEnvEnabled, materializeRemoteWranglerConfig, packageNamesFromBindings, padBadge, paintAnswer, paintBadge, parseDevVariableEntries, parseSchema, planDevVariablesAugment, planDevVariablesScaffold, planRemoteBindings, promptMultiSelect, promptSelect, promptYesNo, readLinkedProject, readProjectRemotePreference, readWranglerJsonc, reconcileWranglerBindings, resolveRemoteEnabled, secretsForPackages, validateWrangler, validateWranglerConfig, validateWranglerProject, withTailConsumer, writeLinkedProject };
package/dist/index.d.ts CHANGED
@@ -288,6 +288,12 @@ declare const LUNORA_EVENT_SOURCE = "lunora";
288
288
  * — so the caller passes the original line through untouched. Pure and total.
289
289
  */
290
290
  declare const formatLunoraEvent: (line: string) => LunoraFormattedLine | undefined;
291
+ declare class LunoraReporter {
292
+ #private;
293
+ setStdout(stdout: NodeJS.WriteStream): void;
294
+ setStderr(stderr: NodeJS.WriteStream): void;
295
+ log(meta: unknown): void;
296
+ }
291
297
  /**
292
298
  * Per-package secret-requirements registry for `.dev.vars` scaffolding.
293
299
  *
@@ -332,6 +338,15 @@ interface SecretEntry {
332
338
  */
333
339
  placeholderValue: string;
334
340
  }
341
+ /**
342
+ * Secrets every Lunora project needs regardless of which capability packages are
343
+ * installed — scaffolded into `.dev.vars` always. `LUNORA_ADMIN_TOKEN` is the
344
+ * bearer the local Studio uses to call the worker's admin endpoints (the data
345
+ * browser, schema edits) in dev; the worker reads the SAME `.dev.vars` value via
346
+ * its admin gate, so both agree and the Studio authenticates without a prompt.
347
+ * Without it, every `/_lunora/admin/*` call is `ADMIN_FORBIDDEN` (403).
348
+ */
349
+
335
350
  /**
336
351
  * The canonical registry of per-package secret requirements.
337
352
  *
@@ -891,6 +906,56 @@ interface DiscoverSchemaInfoResult {
891
906
  * parse failure is a warning (validator) or simply ignorable (inference).
892
907
  */
893
908
  declare const discoverSchemaInfo: (projectRoot: string, schemaDirectory: string) => DiscoverSchemaInfoResult;
909
+ /**
910
+ * A badge: the short colored label that prefixes a line. `bg`/`fg` are hex so the
911
+ * same value drives both colorize's `bgHex().hex()` and the tui `&lt;Text>` props.
912
+ */
913
+ interface BadgeSpec {
914
+ bg: `#${string}`;
915
+ fg: `#${string}`;
916
+ text: string;
917
+ }
918
+ /** Lunora purple — the accent shared with the CLI prompt frames. */
919
+ declare const ACCENT: `#${string}`;
920
+ /** Standard log-level badge names (the restyled base output). */
921
+ type LevelBadgeName = "debug" | "error" | "info" | "success" | "warn";
922
+ /** Step-phase badge names (the create-astro-style flow transcript). */
923
+ type StepBadgeName = "add" | "deps" | "dir" | "git" | "lunora" | "next" | "tmpl";
924
+ type BadgeName = LevelBadgeName | StepBadgeName;
925
+ /** The ordered step-phase names, used to register custom pail log types. */
926
+ declare const STEP_BADGE_NAMES: ReadonlyArray<StepBadgeName>;
927
+ /**
928
+ * Every badge, keyed by name. Levels get their conventional colors (red/amber/
929
+ * green/blue/grey); step phases follow create-astro's green→purple→cyan rhythm.
930
+ */
931
+ declare const BADGES: Record<BadgeName, BadgeSpec>;
932
+ /**
933
+ * Luna, the mascot: the folklore rabbit-in-the-moon — a bunny tucked inside the
934
+ * moon disc. Pure ASCII so it renders the same everywhere (including piped logs).
935
+ * The CLI signs off the `init` flow with it, the way create-astro closes with
936
+ * Houston.
937
+ */
938
+ declare const LUNA_NAME = "Luna";
939
+ declare const LUNA_SIGNOFF = "Safe travels, voyager.";
940
+ declare const LUNA_BUNNY: string;
941
+ /**
942
+ * {@link LUNA_BUNNY} with its leading newline stripped, ready to render inline
943
+ * (beside the name + sign-off). Both render paths — the tui mascot frame and the
944
+ * pail off-TTY fallback — use this so neither re-implements the strip.
945
+ */
946
+ declare const LUNA_ART: string;
947
+ /** The colored part of a badge — the word with one space of padding each side. */
948
+ declare const padBadge: (text: string) => string;
949
+ /** Leading spaces that right-align a badge's box within the gutter. */
950
+ declare const badgeLead: (text: string) => string;
951
+ /** Total columns a rendered badge column occupies (lead + box), constant across badges. */
952
+ declare const BADGE_COLUMN_WIDTH: number;
953
+ /** Columns a rendered badge occupies — the gutter-aligned column width. */
954
+ declare const badgeWidth: (_spec: BadgeSpec) => number;
955
+ /** Paint a badge as an ANSI string (the non-tui path): right-aligning spaces + the colored box. */
956
+ declare const paintBadge: (spec: BadgeSpec) => string;
957
+ /** Dim continuation text (a step's chosen answer, shown under the question). */
958
+ declare const paintAnswer: (text: string) => string;
894
959
  /** Candidate wrangler config filenames, in the order every consumer probes them. */
895
960
  declare const WRANGLER_FILES: readonly ["wrangler.jsonc", "wrangler.json"];
896
961
  /** Locate the project's wrangler config, or `undefined` when none exists. */
@@ -1072,4 +1137,4 @@ interface WranglerProjectValidationResult {
1072
1137
  * `{ problems, wranglerPath }` shape plus the structured `report`.
1073
1138
  */
1074
1139
  declare const validateWranglerProject: (options: WranglerProjectValidationOptions) => WranglerProjectValidationResult;
1075
- export { AGENT_RULES_DIR, AGENT_RULES_HINT, AGENT_RULES_HINT_ENV, type AddIndexEdit, type AddOptionalColumnEdit, type AddTableEdit, type AdditiveEdit, type AgentRulesStatus, type ApplyEditResult, type ApplyFailureReason, type AugmentPlan, DEV_VARS_EXAMPLE_FILE, DEV_VARS_FILE, DEV_VARS_KEY_PATTERN, type DestructiveEdit, type DetectedFramework, type DiscoverContainerInfoResult, type DiscoverSchemaInfoResult, type DiscoverWorkflowInfoResult, type EnsureDevVariablesDeps, type EnsureDevVariablesResult, type EnsureDevVariablesStatus, type ExportGap, type FrameworkClass, type FrameworkDetection, type InferOptions, type InferredBindings, type InferredContainer, type InferredWorkflow, LINKED_PROJECT_DIR, LINKED_PROJECT_FILE, LUNORA_CONFIG_FILE, LUNORA_EVENT_SOURCE, LUNORA_SKILL_NAMES, type LinkedProject, type LunoraFormattedLine, type LunoraLineLevel, type LunoraProjectConfig, type MaterializeOptions, type MaterializeResult, type MultiSelectOption, PACKAGE_SECRETS_REGISTRY, type ParseSchemaResult, REMOTE_ELIGIBLE_KEYS, REQUIRED_COMPATIBILITY_DATE, REQUIRED_FLAG, ROOT_SKILL_NAME, type ReadWranglerResult, type ReconcileBindingsResult, type RemoteBindingPlan, type RemoteEnableInputs, type RemotePreference, type RemoteWranglerShape, type ScaffoldPlan, type SchemaColumn, type SchemaEdit, type SchemaIndex, type SchemaInfo, type SchemaTable, type SecretEntry, type SelectOption, type TailConsumer, WRANGLER_FILES, type WranglerConfig, type WranglerContainerEntry, type WranglerProjectValidationOptions, type WranglerProjectValidationResult, type WranglerValidationReport, type WranglerWorkflowEntry, applyAdditiveEdit, buildPackageSecretsBlock, claimAgentRulesHint, classifyEdit, createConfirm, detectAgentRules, detectFramework, discoverContainerInfo, discoverSchemaInfo, discoverWorkflowInfo, ensureDevVariables, ensureDevVariablesExample as ensureDevVarsExample, findWranglerFile, formatLunoraEvent, inferLunoraBindings, injectRemoteFlags, interpretRemote, isInteractive, isPlaceholderValue, isRemoteEnvEnabled, materializeRemoteWranglerConfig, packageNamesFromBindings, parseDevVariableEntries, parseSchema, planDevVariablesAugment, planDevVariablesScaffold, planRemoteBindings, promptMultiSelect, promptSelect, promptYesNo, readLinkedProject, readProjectRemotePreference, readWranglerJsonc, reconcileWranglerBindings, resolveRemoteEnabled, secretsForPackages, validateWrangler, validateWranglerConfig, validateWranglerProject, withTailConsumer, writeLinkedProject };
1140
+ export { ACCENT, AGENT_RULES_DIR, AGENT_RULES_HINT, AGENT_RULES_HINT_ENV, type AddIndexEdit, type AddOptionalColumnEdit, type AddTableEdit, type AdditiveEdit, type AgentRulesStatus, type ApplyEditResult, type ApplyFailureReason, type AugmentPlan, BADGES, BADGE_COLUMN_WIDTH, type BadgeName, type BadgeSpec, DEV_VARS_EXAMPLE_FILE, DEV_VARS_FILE, DEV_VARS_KEY_PATTERN, type DestructiveEdit, type DetectedFramework, type DiscoverContainerInfoResult, type DiscoverSchemaInfoResult, type DiscoverWorkflowInfoResult, type EnsureDevVariablesDeps, type EnsureDevVariablesResult, type EnsureDevVariablesStatus, type ExportGap, type FrameworkClass, type FrameworkDetection, type InferOptions, type InferredBindings, type InferredContainer, type InferredWorkflow, LINKED_PROJECT_DIR, LINKED_PROJECT_FILE, LUNA_ART, LUNA_BUNNY, LUNA_NAME, LUNA_SIGNOFF, LUNORA_CONFIG_FILE, LUNORA_EVENT_SOURCE, LUNORA_SKILL_NAMES, type LevelBadgeName, type LinkedProject, type LunoraFormattedLine, type LunoraLineLevel, type LunoraProjectConfig, LunoraReporter, type MaterializeOptions, type MaterializeResult, type MultiSelectOption, PACKAGE_SECRETS_REGISTRY, type ParseSchemaResult, REMOTE_ELIGIBLE_KEYS, REQUIRED_COMPATIBILITY_DATE, REQUIRED_FLAG, ROOT_SKILL_NAME, type ReadWranglerResult, type ReconcileBindingsResult, type RemoteBindingPlan, type RemoteEnableInputs, type RemotePreference, type RemoteWranglerShape, STEP_BADGE_NAMES, type ScaffoldPlan, type SchemaColumn, type SchemaEdit, type SchemaIndex, type SchemaInfo, type SchemaTable, type SecretEntry, type SelectOption, type StepBadgeName, type TailConsumer, WRANGLER_FILES, type WranglerConfig, type WranglerContainerEntry, type WranglerProjectValidationOptions, type WranglerProjectValidationResult, type WranglerValidationReport, type WranglerWorkflowEntry, applyAdditiveEdit, badgeLead, badgeWidth, buildPackageSecretsBlock, claimAgentRulesHint, classifyEdit, createConfirm, detectAgentRules, detectFramework, discoverContainerInfo, discoverSchemaInfo, discoverWorkflowInfo, ensureDevVariables, ensureDevVariablesExample as ensureDevVarsExample, findWranglerFile, formatLunoraEvent, inferLunoraBindings, injectRemoteFlags, interpretRemote, isInteractive, isPlaceholderValue, isRemoteEnvEnabled, materializeRemoteWranglerConfig, packageNamesFromBindings, padBadge, paintAnswer, paintBadge, parseDevVariableEntries, parseSchema, planDevVariablesAugment, planDevVariablesScaffold, planRemoteBindings, promptMultiSelect, promptSelect, promptYesNo, readLinkedProject, readProjectRemotePreference, readWranglerJsonc, reconcileWranglerBindings, resolveRemoteEnabled, secretsForPackages, validateWrangler, validateWranglerConfig, validateWranglerProject, withTailConsumer, writeLinkedProject };
package/dist/index.mjs CHANGED
@@ -2,19 +2,21 @@ export { AGENT_RULES_DIR, AGENT_RULES_HINT, AGENT_RULES_HINT_ENV, LUNORA_SKILL_N
2
2
  export { discoverContainerInfo } from './packem_shared/discoverContainerInfo-BXFs6Wav.mjs';
3
3
  export { detectFramework } from './packem_shared/detectFramework-Br-BcPBq.mjs';
4
4
  export { DEV_VARS_EXAMPLE_FILE, DEV_VARS_FILE, DEV_VARS_KEY_PATTERN, parseDevVariableEntries } from './packem_shared/DEV_VARS_EXAMPLE_FILE-dJPNTEnK.mjs';
5
- export { inferLunoraBindings, packageNamesFromBindings } from './packem_shared/inferLunoraBindings-0W3eRdIP.mjs';
5
+ export { inferLunoraBindings, packageNamesFromBindings } from './packem_shared/inferLunoraBindings-DIku9mTN.mjs';
6
6
  export { LINKED_PROJECT_DIR, LINKED_PROJECT_FILE, readLinkedProject, writeLinkedProject } from './packem_shared/LINKED_PROJECT_DIR-CXwXzV_C.mjs';
7
- export { LUNORA_EVENT_SOURCE, formatLunoraEvent } from './packem_shared/formatLunoraEvent-D2fDeGB6.mjs';
8
- export { PACKAGE_SECRETS_REGISTRY, secretsForPackages } from './packem_shared/PACKAGE_SECRETS_REGISTRY-CySy5vR_.mjs';
9
- export { LUNORA_CONFIG_FILE, interpretRemote, readProjectRemotePreference } from './packem_shared/interpretRemote-CtcIcB5-.mjs';
7
+ export { LUNORA_EVENT_SOURCE, formatLunoraEvent } from './packem_shared/LUNORA_EVENT_SOURCE-D2fDeGB6.mjs';
8
+ export { default as LunoraReporter } from './packem_shared/LunoraReporter-Ci-bDCK9.mjs';
9
+ export { PACKAGE_SECRETS_REGISTRY, secretsForPackages } from './packem_shared/PACKAGE_SECRETS_REGISTRY-B8t_SdoZ.mjs';
10
+ export { LUNORA_CONFIG_FILE, interpretRemote, readProjectRemotePreference } from './packem_shared/LUNORA_CONFIG_FILE-CtcIcB5-.mjs';
10
11
  export { createConfirm, isInteractive, promptMultiSelect, promptSelect, promptYesNo } from './packem_shared/createConfirm-fvpdgJ9s.mjs';
11
- export { reconcileWranglerBindings } from './packem_shared/reconcileWranglerBindings-ByJk3yLU.mjs';
12
- export { REMOTE_ELIGIBLE_KEYS, injectRemoteFlags, isRemoteEnvEnabled, materializeRemoteWranglerConfig, planRemoteBindings, resolveRemoteEnabled } from './packem_shared/injectRemoteFlags-C-WZAKLY.mjs';
13
- export { buildPackageSecretsBlock, ensureDevVariables, ensureDevVarsExample, isPlaceholderValue, planDevVariablesAugment, planDevVariablesScaffold } from './packem_shared/buildPackageSecretsBlock-S74dgmwy.mjs';
12
+ export { reconcileWranglerBindings } from './packem_shared/reconcileWranglerBindings-DTHmqTbL.mjs';
13
+ export { REMOTE_ELIGIBLE_KEYS, injectRemoteFlags, isRemoteEnvEnabled, materializeRemoteWranglerConfig, planRemoteBindings, resolveRemoteEnabled } from './packem_shared/REMOTE_ELIGIBLE_KEYS-BC7_e9Bz.mjs';
14
+ export { buildPackageSecretsBlock, ensureDevVariables, ensureDevVarsExample, isPlaceholderValue, planDevVariablesAugment, planDevVariablesScaffold } from './packem_shared/buildPackageSecretsBlock-DNzNRu7T.mjs';
14
15
  export { applyAdditiveEdit, classifyEdit } from './packem_shared/applyAdditiveEdit-C-snTFEV.mjs';
15
16
  export { parseSchema } from './packem_shared/parseSchema-DSeyktvG.mjs';
16
17
  export { classifyPolicyEdit, scaffoldPolicyFile, wireRlsIntoProcedure } from './packem_shared/classifyPolicyEdit-BHeAqF8P.mjs';
17
- export { discoverSchemaInfo } from './packem_shared/discoverSchemaInfo-DWtypqpP.mjs';
18
+ export { discoverSchemaInfo } from './packem_shared/discoverSchemaInfo-BB-CKlTK.mjs';
19
+ export { ACCENT, BADGES, BADGE_COLUMN_WIDTH, LUNA_ART, LUNA_BUNNY, LUNA_NAME, LUNA_SIGNOFF, STEP_BADGE_NAMES, badgeLead, badgeWidth, padBadge, paintAnswer, paintBadge } from './packem_shared/ACCENT-DW1XJn8i.mjs';
18
20
  export { discoverWorkflowInfo } from './packem_shared/discoverWorkflowInfo-CedvR0mn.mjs';
19
- export { WRANGLER_FILES, findWranglerFile, readWranglerJsonc } from './packem_shared/findWranglerFile-DwSuC-Kn.mjs';
20
- export { REQUIRED_COMPATIBILITY_DATE, REQUIRED_FLAG, validateWrangler, validateWranglerConfig, validateWranglerProject, withTailConsumer } from './packem_shared/REQUIRED_COMPATIBILITY_DATE-Dd1suoit.mjs';
21
+ export { WRANGLER_FILES, findWranglerFile, readWranglerJsonc } from './packem_shared/WRANGLER_FILES-DwSuC-Kn.mjs';
22
+ export { REQUIRED_COMPATIBILITY_DATE, REQUIRED_FLAG, validateWrangler, validateWranglerConfig, validateWranglerProject, withTailConsumer } from './packem_shared/REQUIRED_COMPATIBILITY_DATE-DRSNSOOp.mjs';
@@ -0,0 +1,40 @@
1
+ import colorize from '@visulima/colorize';
2
+
3
+ const ACCENT = "#a855f7";
4
+ const INK = "#0b0b0b";
5
+ const STEP_BADGE_NAMES = ["lunora", "dir", "tmpl", "add", "deps", "git", "next"];
6
+ const BADGES = {
7
+ add: { bg: ACCENT, fg: INK, text: "add" },
8
+ debug: { bg: "#6b7280", fg: "#f3f4f6", text: "debug" },
9
+ deps: { bg: ACCENT, fg: INK, text: "deps" },
10
+ dir: { bg: ACCENT, fg: INK, text: "dir" },
11
+ error: { bg: "#ef4444", fg: INK, text: "error" },
12
+ git: { bg: "#f59e0b", fg: INK, text: "git" },
13
+ info: { bg: "#3b82f6", fg: INK, text: "info" },
14
+ lunora: { bg: "#22c55e", fg: INK, text: "lunora" },
15
+ next: { bg: "#06b6d4", fg: INK, text: "next" },
16
+ success: { bg: "#22c55e", fg: INK, text: "ok" },
17
+ tmpl: { bg: ACCENT, fg: INK, text: "tmpl" },
18
+ warn: { bg: "#f59e0b", fg: INK, text: "warn" }
19
+ };
20
+ const LUNA_NAME = "Luna";
21
+ const LUNA_SIGNOFF = "Safe travels, voyager.";
22
+ const LUNA_BUNNY = String.raw`
23
+ .-"""""-.
24
+ / (\(\ \
25
+ | ( -.-) |
26
+ \ o(")(") /
27
+ '-._____.-'`;
28
+ const LUNA_ART = LUNA_BUNNY.startsWith("\n") ? LUNA_BUNNY.slice(1) : LUNA_BUNNY;
29
+ const BADGE_GUTTER = 6;
30
+ const padBadge = (text) => ` ${text} `;
31
+ const badgeLead = (text) => " ".repeat(Math.max(0, BADGE_GUTTER - text.length));
32
+ const BADGE_COLUMN_WIDTH = BADGE_GUTTER + 2;
33
+ const badgeWidth = (_spec) => BADGE_COLUMN_WIDTH;
34
+ const paintBadge = (spec) => (
35
+ // eslint-disable-next-line import/no-named-as-default-member -- see file header.
36
+ badgeLead(spec.text) + colorize.bgHex(spec.bg).hex(spec.fg).bold(padBadge(spec.text))
37
+ );
38
+ const paintAnswer = (text) => colorize.dim(text);
39
+
40
+ export { ACCENT, BADGES, BADGE_COLUMN_WIDTH, LUNA_ART, LUNA_BUNNY, LUNA_NAME, LUNA_SIGNOFF, STEP_BADGE_NAMES, badgeLead, badgeWidth, padBadge, paintAnswer, paintBadge };
@@ -0,0 +1,70 @@
1
+ import { paintBadge, badgeWidth, BADGES } from './ACCENT-DW1XJn8i.mjs';
2
+
3
+ const NAME_ALIASES = {
4
+ informational: "info",
5
+ warning: "warn"
6
+ };
7
+ const STDERR_LEVELS = /* @__PURE__ */ new Set(["alert", "critical", "emergency", "error", "warn", "warning"]);
8
+ const resolveBadge = (name) => {
9
+ if (name in BADGES) {
10
+ return BADGES[name];
11
+ }
12
+ const alias = NAME_ALIASES[name];
13
+ return alias === void 0 ? void 0 : BADGES[alias];
14
+ };
15
+ const renderContextArgument = (value) => {
16
+ if (value instanceof Error) {
17
+ return `
18
+ ${value.stack ?? value.message}`;
19
+ }
20
+ if (typeof value === "object" && value !== null) {
21
+ try {
22
+ return ` ${JSON.stringify(value)}`;
23
+ } catch {
24
+ return " [unserializable]";
25
+ }
26
+ }
27
+ return ` ${String(value)}`;
28
+ };
29
+ const composeMessage = (meta) => {
30
+ const base = typeof meta.message === "string" ? meta.message : String(meta.message);
31
+ const context = meta.context ?? [];
32
+ return context.length === 0 ? base : base + context.map((value) => renderContextArgument(value)).join("");
33
+ };
34
+ class LunoraReporter {
35
+ #stdout = process.stdout;
36
+ #stderr = process.stderr;
37
+ setStdout(stdout) {
38
+ this.#stdout = stdout;
39
+ }
40
+ setStderr(stderr) {
41
+ this.#stderr = stderr;
42
+ }
43
+ // Note: pail's other reporter setters (setLoggerTypes / setInteractiveManager /
44
+ // setIsInteractive) are optional and intentionally omitted — this reporter keeps
45
+ // no type or interactive state; it only needs the two stream setters above.
46
+ log(meta) {
47
+ const data = meta;
48
+ const badge = resolveBadge(data.type.name);
49
+ const stream = STDERR_LEVELS.has(data.type.level ?? data.type.name) ? this.#stderr : this.#stdout;
50
+ stream.write(LunoraReporter.#render(badge, composeMessage(data)));
51
+ }
52
+ /**
53
+ * Frame `text` under `badge`: `&lt;badge> &lt;first line>`, with any further lines
54
+ * indented to align beneath the message. Without a badge (unknown type) the
55
+ * message is written plain.
56
+ */
57
+ static #render(badge, text) {
58
+ if (badge === void 0) {
59
+ return `${text}
60
+ `;
61
+ }
62
+ const [first = "", ...rest] = text.split("\n");
63
+ const indent = " ".repeat(badgeWidth() + 1);
64
+ const lines = [`${paintBadge(badge)} ${first}`, ...rest.map((line) => `${indent}${line}`)];
65
+ return `${lines.join("\n")}
66
+ `;
67
+ }
68
+ }
69
+
70
+ export { LunoraReporter as default };
@@ -1,3 +1,11 @@
1
+ const CORE_SECRETS = [
2
+ {
3
+ description: "Bearer token the local Lunora Studio uses to call the worker's admin endpoints (data browser, schema edits) in dev. Generate with: openssl rand -hex 32",
4
+ docsUrl: "https://lunora.sh/docs/packages/studio",
5
+ key: "LUNORA_ADMIN_TOKEN",
6
+ placeholderValue: "replace-with-openssl-rand-hex-32"
7
+ }
8
+ ];
1
9
  const PACKAGE_SECRETS_REGISTRY = {
2
10
  "@lunora/auth": [
3
11
  {
@@ -59,4 +67,4 @@ const secretsForPackages = (packageNames) => {
59
67
  return result;
60
68
  };
61
69
 
62
- export { PACKAGE_SECRETS_REGISTRY, secretsForPackages };
70
+ export { CORE_SECRETS, PACKAGE_SECRETS_REGISTRY, secretsForPackages };
@@ -1,6 +1,6 @@
1
1
  import { writeFileSync, rmSync } from 'node:fs';
2
2
  import { modify, applyEdits } from 'jsonc-parser';
3
- import { findWranglerFile, readWranglerJsonc } from './findWranglerFile-DwSuC-Kn.mjs';
3
+ import { findWranglerFile, readWranglerJsonc } from './WRANGLER_FILES-DwSuC-Kn.mjs';
4
4
  import { join } from 'node:path';
5
5
 
6
6
  const FORMATTING = { formattingOptions: { insertSpaces: true, tabSize: 4 } };
@@ -1,7 +1,7 @@
1
1
  import { existsSync } from 'node:fs';
2
2
  import { dirname, join } from 'node:path';
3
- import { discoverSchemaInfo } from './discoverSchemaInfo-DWtypqpP.mjs';
4
- import { findWranglerFile, readWranglerJsonc } from './findWranglerFile-DwSuC-Kn.mjs';
3
+ import { discoverSchemaInfo } from './discoverSchemaInfo-BB-CKlTK.mjs';
4
+ import { findWranglerFile, readWranglerJsonc } from './WRANGLER_FILES-DwSuC-Kn.mjs';
5
5
 
6
6
  const REQUIRED_COMPATIBILITY_DATE = "2026-04-07";
7
7
  const REQUIRED_FLAG = "web_socket_auto_reply_to_close";
@@ -2,8 +2,9 @@ import { randomBytes } from 'node:crypto';
2
2
  import { existsSync, readFileSync, writeFileSync, renameSync, rmSync } from 'node:fs';
3
3
  import { join } from 'node:path';
4
4
  import { DEV_VARS_FILE, DEV_VARS_EXAMPLE_FILE, parseDevVariableEntries, DEV_VARS_NEWLINE, splitDevVariableLine, unquoteDevVariable } from './DEV_VARS_EXAMPLE_FILE-dJPNTEnK.mjs';
5
- import { secretsForPackages } from './PACKAGE_SECRETS_REGISTRY-CySy5vR_.mjs';
5
+ import { CORE_SECRETS, secretsForPackages } from './PACKAGE_SECRETS_REGISTRY-B8t_SdoZ.mjs';
6
6
 
7
+ const requiredSecrets = (packageNames) => [...CORE_SECRETS, ...secretsForPackages(packageNames)];
7
8
  const SECRET_BYTES = 32;
8
9
  const SECRET_KEY = /(?:KEY|PASSWORD|SECRET|TOKEN)$/u;
9
10
  const PLACEHOLDER_MARKERS = [
@@ -155,7 +156,7 @@ const secretEntryBlock = (entry) => {
155
156
  return lines.join("\n");
156
157
  };
157
158
  const buildPackageSecretsBlock = (packageNames, existingKeys) => {
158
- const entries = secretsForPackages(packageNames).filter((entry) => !existingKeys.has(entry.key));
159
+ const entries = requiredSecrets(packageNames).filter((entry) => !existingKeys.has(entry.key));
159
160
  if (entries.length === 0) {
160
161
  return "";
161
162
  }
@@ -181,7 +182,7 @@ ${block}
181
182
  rmSync(temporaryPath, { force: true });
182
183
  throw error;
183
184
  }
184
- return secretsForPackages(packageNames).filter((entry) => !existingKeys.has(entry.key)).map((entry) => entry.key);
185
+ return requiredSecrets(packageNames).filter((entry) => !existingKeys.has(entry.key)).map((entry) => entry.key);
185
186
  };
186
187
 
187
188
  export { buildPackageSecretsBlock, ensureDevVariables, ensureDevVariablesExample as ensureDevVarsExample, isPlaceholderValue, planDevVariablesAugment, planDevVariablesScaffold };
@@ -10,7 +10,7 @@ const discoverSchemaInfo = (projectRoot, schemaDirectory) => {
10
10
  }
11
11
  try {
12
12
  const project = new Project({ skipAddingFilesFromTsConfig: true, useInMemoryFileSystem: false });
13
- const schema = discoverSchema(project, schemaPath);
13
+ const schema = discoverSchema(project, schemaPath, projectRoot);
14
14
  return {
15
15
  info: {
16
16
  hasGlobalTable: schema.tables.some((table) => table.shardMode === "global"),
@@ -1,9 +1,9 @@
1
1
  import { existsSync, statSync, readFileSync, readdirSync } from 'node:fs';
2
2
  import { init, parse } from 'es-module-lexer';
3
3
  import { discoverContainerInfo } from './discoverContainerInfo-BXFs6Wav.mjs';
4
- import { discoverSchemaInfo } from './discoverSchemaInfo-DWtypqpP.mjs';
4
+ import { discoverSchemaInfo } from './discoverSchemaInfo-BB-CKlTK.mjs';
5
5
  import { discoverWorkflowInfo } from './discoverWorkflowInfo-CedvR0mn.mjs';
6
- import { WRANGLER_FILES, readWranglerJsonc } from './findWranglerFile-DwSuC-Kn.mjs';
6
+ import { WRANGLER_FILES, readWranglerJsonc } from './WRANGLER_FILES-DwSuC-Kn.mjs';
7
7
  import { join } from 'node:path';
8
8
 
9
9
  const SOURCE_EXTENSIONS = /* @__PURE__ */ new Set([".cjs", ".cts", ".js", ".jsx", ".mjs", ".mts", ".ts", ".tsx"]);
@@ -137,8 +137,8 @@ const detectExportedDurableObjects = (entryPath) => {
137
137
  const code = readFileSync(entryPath, "utf8");
138
138
  let exportedNames;
139
139
  try {
140
- const [, exports$1] = parse(code);
141
- exportedNames = new Set(exports$1.map((entry) => entry.n));
140
+ const [, exports] = parse(code);
141
+ exportedNames = new Set(exports.map((entry) => entry.n));
142
142
  } catch {
143
143
  exportedNames = new Set(DURABLE_OBJECT_CLASSES.filter((className) => new RegExp(String.raw`\bexport\b[^\n;]*\b${className}\b`).test(code)));
144
144
  }
@@ -163,8 +163,8 @@ const detectContainerExports = (entryPath, containers) => {
163
163
  const starReexport = CONTAINERS_STAR_REEXPORT_PATTERN.test(code);
164
164
  let exportedNames;
165
165
  try {
166
- const [, exports$1] = parse(code);
167
- exportedNames = new Set(exports$1.map((entry) => entry.n));
166
+ const [, exports] = parse(code);
167
+ exportedNames = new Set(exports.map((entry) => entry.n));
168
168
  } catch {
169
169
  exportedNames = new Set(
170
170
  containers.map((container) => container.className).filter((className) => new RegExp(String.raw`\bexport\b[^\n;]*\b${className}\b`).test(code))
@@ -188,8 +188,8 @@ const detectWorkflowExports = (entryPath, workflows) => {
188
188
  const starReexport = WORKFLOWS_STAR_REEXPORT_PATTERN.test(code);
189
189
  let exportedNames;
190
190
  try {
191
- const [, exports$1] = parse(code);
192
- exportedNames = new Set(exports$1.map((entry) => entry.n));
191
+ const [, exports] = parse(code);
192
+ exportedNames = new Set(exports.map((entry) => entry.n));
193
193
  } catch {
194
194
  exportedNames = new Set(
195
195
  workflows.map((workflow) => workflow.className).filter((className) => new RegExp(String.raw`\bexport\b[^\n;]*\b${className}\b`).test(code))
@@ -1,7 +1,7 @@
1
1
  import { writeFileSync } from 'node:fs';
2
2
  import { containerBuildTag } from '@lunora/container';
3
3
  import { modify, applyEdits } from 'jsonc-parser';
4
- import { findWranglerFile, readWranglerJsonc } from './findWranglerFile-DwSuC-Kn.mjs';
4
+ import { findWranglerFile, readWranglerJsonc } from './WRANGLER_FILES-DwSuC-Kn.mjs';
5
5
 
6
6
  const FORMATTING = { formattingOptions: { insertSpaces: true, tabSize: 4 } };
7
7
  const D1_PLACEHOLDER_ID = "<replace-with-d1-create-id>";
@@ -1,7 +1,7 @@
1
1
  export { parseDevVariable, resolveAdminToken } from '../packem_shared/parseDevVariable-CJiq2IwE.mjs';
2
- export { default as loadStudioAssets, studioAssetsStamp } from '../packem_shared/studioAssetsStamp-Csk5RS4E.mjs';
3
- export { POLICY_SCAFFOLD_ENDPOINT, handlePolicyScaffoldRequest } from '../packem_shared/handlePolicyScaffoldRequest-CiC2IGKx.mjs';
2
+ export { default as loadStudioAssets, studioAssetsStamp } from '../packem_shared/loadStudioAssets-Csk5RS4E.mjs';
3
+ export { POLICY_SCAFFOLD_ENDPOINT, handlePolicyScaffoldRequest } from '../packem_shared/POLICY_SCAFFOLD_ENDPOINT-CiC2IGKx.mjs';
4
4
  export { default as renderStudioHtml } from '../packem_shared/renderStudioHtml-449Ysn75.mjs';
5
- export { SCHEMA_EDIT_ENDPOINT, handleSchemaEditRequest } from '../packem_shared/handleSchemaEditRequest-Df-Wrix-.mjs';
6
- export { SEED_ENDPOINT, handleSeedRequest } from '../packem_shared/handleSeedRequest-DVCjaGO-.mjs';
5
+ export { SCHEMA_EDIT_ENDPOINT, handleSchemaEditRequest } from '../packem_shared/SCHEMA_EDIT_ENDPOINT-Df-Wrix-.mjs';
6
+ export { SEED_ENDPOINT, handleSeedRequest } from '../packem_shared/SEED_ENDPOINT-DVCjaGO-.mjs';
7
7
  export { serveJsonHandler } from '../packem_shared/serveJsonHandler-B4OLTGLS.mjs';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lunora/config",
3
- "version": "1.0.0-alpha.1",
3
+ "version": "1.0.0-alpha.11",
4
4
  "description": "Internal shared CLI + Vite config layer for Lunora: wrangler.jsonc validation, binding inference, and .dev.vars scaffolding",
5
5
  "keywords": [
6
6
  "bindings",
@@ -50,15 +50,16 @@
50
50
  "access": "public"
51
51
  },
52
52
  "dependencies": {
53
- "@lunora/codegen": "1.0.0-alpha.1",
53
+ "@lunora/codegen": "1.0.0-alpha.7",
54
54
  "@lunora/container": "1.0.0-alpha.1",
55
- "@lunora/seed": "1.0.0-alpha.1",
55
+ "@lunora/seed": "1.0.0-alpha.2",
56
+ "@visulima/colorize": "2.0.0-alpha.14",
56
57
  "es-module-lexer": "^2.1.0",
57
58
  "jsonc-parser": "^3.3.1",
58
59
  "ts-morph": "^28.0.0"
59
60
  },
60
61
  "peerDependencies": {
61
- "@lunora/studio": "1.0.0-alpha.1"
62
+ "@lunora/studio": "1.0.0-alpha.5"
62
63
  },
63
64
  "peerDependenciesMeta": {
64
65
  "@lunora/studio": {