@g3nomaly/core 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (151) hide show
  1. package/README.md +3 -0
  2. package/package.json +3 -60
  3. package/LICENSE +0 -95
  4. package/dist/cli/commands/add.d.ts +0 -17
  5. package/dist/cli/commands/add.d.ts.map +0 -1
  6. package/dist/cli/commands/add.js +0 -76
  7. package/dist/cli/commands/add.js.map +0 -1
  8. package/dist/cli/commands/ls.d.ts +0 -5
  9. package/dist/cli/commands/ls.d.ts.map +0 -1
  10. package/dist/cli/commands/ls.js +0 -22
  11. package/dist/cli/commands/ls.js.map +0 -1
  12. package/dist/cli/commands/remove.d.ts +0 -13
  13. package/dist/cli/commands/remove.d.ts.map +0 -1
  14. package/dist/cli/commands/remove.js +0 -109
  15. package/dist/cli/commands/remove.js.map +0 -1
  16. package/dist/cli/commands/update.d.ts +0 -10
  17. package/dist/cli/commands/update.d.ts.map +0 -1
  18. package/dist/cli/commands/update.js +0 -92
  19. package/dist/cli/commands/update.js.map +0 -1
  20. package/dist/cli/dialogue.d.ts +0 -74
  21. package/dist/cli/dialogue.d.ts.map +0 -1
  22. package/dist/cli/dialogue.js +0 -117
  23. package/dist/cli/dialogue.js.map +0 -1
  24. package/dist/cli/index.d.ts +0 -10
  25. package/dist/cli/index.d.ts.map +0 -1
  26. package/dist/cli/index.js +0 -10
  27. package/dist/cli/index.js.map +0 -1
  28. package/dist/cli/theme.d.ts +0 -23
  29. package/dist/cli/theme.d.ts.map +0 -1
  30. package/dist/cli/theme.js +0 -25
  31. package/dist/cli/theme.js.map +0 -1
  32. package/dist/cli/types.d.ts +0 -45
  33. package/dist/cli/types.d.ts.map +0 -1
  34. package/dist/cli/types.js +0 -2
  35. package/dist/cli/types.js.map +0 -1
  36. package/dist/config/config.d.ts +0 -30
  37. package/dist/config/config.d.ts.map +0 -1
  38. package/dist/config/config.js +0 -77
  39. package/dist/config/config.js.map +0 -1
  40. package/dist/config/index.d.ts +0 -4
  41. package/dist/config/index.d.ts.map +0 -1
  42. package/dist/config/index.js +0 -3
  43. package/dist/config/index.js.map +0 -1
  44. package/dist/config/types.d.ts +0 -140
  45. package/dist/config/types.d.ts.map +0 -1
  46. package/dist/config/types.js +0 -63
  47. package/dist/config/types.js.map +0 -1
  48. package/dist/hash/hash.d.ts +0 -25
  49. package/dist/hash/hash.d.ts.map +0 -1
  50. package/dist/hash/hash.js +0 -44
  51. package/dist/hash/hash.js.map +0 -1
  52. package/dist/hash/index.d.ts +0 -2
  53. package/dist/hash/index.d.ts.map +0 -1
  54. package/dist/hash/index.js +0 -2
  55. package/dist/hash/index.js.map +0 -1
  56. package/dist/index.d.ts +0 -1
  57. package/dist/index.d.ts.map +0 -1
  58. package/dist/index.js +0 -2
  59. package/dist/index.js.map +0 -1
  60. package/dist/installer/classify.d.ts +0 -7
  61. package/dist/installer/classify.d.ts.map +0 -1
  62. package/dist/installer/classify.js +0 -47
  63. package/dist/installer/classify.js.map +0 -1
  64. package/dist/installer/index.d.ts +0 -6
  65. package/dist/installer/index.d.ts.map +0 -1
  66. package/dist/installer/index.js +0 -7
  67. package/dist/installer/index.js.map +0 -1
  68. package/dist/installer/install.d.ts +0 -13
  69. package/dist/installer/install.d.ts.map +0 -1
  70. package/dist/installer/install.js +0 -61
  71. package/dist/installer/install.js.map +0 -1
  72. package/dist/installer/io.d.ts +0 -4
  73. package/dist/installer/io.d.ts.map +0 -1
  74. package/dist/installer/io.js +0 -18
  75. package/dist/installer/io.js.map +0 -1
  76. package/dist/installer/remove.d.ts +0 -14
  77. package/dist/installer/remove.d.ts.map +0 -1
  78. package/dist/installer/remove.js +0 -37
  79. package/dist/installer/remove.js.map +0 -1
  80. package/dist/installer/types.d.ts +0 -80
  81. package/dist/installer/types.d.ts.map +0 -1
  82. package/dist/installer/types.js +0 -21
  83. package/dist/installer/types.js.map +0 -1
  84. package/dist/registry/index.d.ts +0 -12
  85. package/dist/registry/index.d.ts.map +0 -1
  86. package/dist/registry/index.js +0 -12
  87. package/dist/registry/index.js.map +0 -1
  88. package/dist/registry/registry.handlers.d.ts +0 -9
  89. package/dist/registry/registry.handlers.d.ts.map +0 -1
  90. package/dist/registry/registry.handlers.js +0 -13
  91. package/dist/registry/registry.handlers.js.map +0 -1
  92. package/dist/registry/registry.io.d.ts +0 -22
  93. package/dist/registry/registry.io.d.ts.map +0 -1
  94. package/dist/registry/registry.io.js +0 -78
  95. package/dist/registry/registry.io.js.map +0 -1
  96. package/dist/registry/registry.mutations.d.ts +0 -12
  97. package/dist/registry/registry.mutations.d.ts.map +0 -1
  98. package/dist/registry/registry.mutations.js +0 -22
  99. package/dist/registry/registry.mutations.js.map +0 -1
  100. package/dist/registry/registry.selectors.d.ts +0 -38
  101. package/dist/registry/registry.selectors.d.ts.map +0 -1
  102. package/dist/registry/registry.selectors.js +0 -61
  103. package/dist/registry/registry.selectors.js.map +0 -1
  104. package/dist/registry/registry.store.d.ts +0 -34
  105. package/dist/registry/registry.store.d.ts.map +0 -1
  106. package/dist/registry/registry.store.js +0 -27
  107. package/dist/registry/registry.store.js.map +0 -1
  108. package/dist/registry/registry.template.d.ts +0 -23
  109. package/dist/registry/registry.template.d.ts.map +0 -1
  110. package/dist/registry/registry.template.js +0 -63
  111. package/dist/registry/registry.template.js.map +0 -1
  112. package/dist/registry/types.d.ts +0 -33
  113. package/dist/registry/types.d.ts.map +0 -1
  114. package/dist/registry/types.js +0 -25
  115. package/dist/registry/types.js.map +0 -1
  116. package/dist/security/index.d.ts +0 -2
  117. package/dist/security/index.d.ts.map +0 -1
  118. package/dist/security/index.js +0 -2
  119. package/dist/security/index.js.map +0 -1
  120. package/dist/security/securityParser.d.ts +0 -14
  121. package/dist/security/securityParser.d.ts.map +0 -1
  122. package/dist/security/securityParser.js +0 -89
  123. package/dist/security/securityParser.js.map +0 -1
  124. package/dist/security/securityWorker.d.ts +0 -8
  125. package/dist/security/securityWorker.d.ts.map +0 -1
  126. package/dist/security/securityWorker.js +0 -158
  127. package/dist/security/securityWorker.js.map +0 -1
  128. package/dist/utils/index.d.ts +0 -6
  129. package/dist/utils/index.d.ts.map +0 -1
  130. package/dist/utils/index.js +0 -6
  131. package/dist/utils/index.js.map +0 -1
  132. package/dist/utils/merge.d.ts +0 -6
  133. package/dist/utils/merge.d.ts.map +0 -1
  134. package/dist/utils/merge.js +0 -21
  135. package/dist/utils/merge.js.map +0 -1
  136. package/dist/utils/packageMeta.d.ts +0 -12
  137. package/dist/utils/packageMeta.d.ts.map +0 -1
  138. package/dist/utils/packageMeta.js +0 -20
  139. package/dist/utils/packageMeta.js.map +0 -1
  140. package/dist/utils/paths.d.ts +0 -16
  141. package/dist/utils/paths.d.ts.map +0 -1
  142. package/dist/utils/paths.js +0 -40
  143. package/dist/utils/paths.js.map +0 -1
  144. package/dist/utils/prompt.d.ts +0 -3
  145. package/dist/utils/prompt.d.ts.map +0 -1
  146. package/dist/utils/prompt.js +0 -8
  147. package/dist/utils/prompt.js.map +0 -1
  148. package/dist/utils/version.d.ts +0 -9
  149. package/dist/utils/version.d.ts.map +0 -1
  150. package/dist/utils/version.js +0 -103
  151. package/dist/utils/version.js.map +0 -1
@@ -1,74 +0,0 @@
1
- export declare const StepKind: {
2
- readonly Select: 0;
3
- readonly MultiSelect: 1;
4
- readonly Confirm: 2;
5
- readonly Text: 3;
6
- };
7
- export type StepKind = (typeof StepKind)[keyof typeof StepKind];
8
- export type DialogueAnswers = Record<string, unknown>;
9
- export interface StepChoice<V = unknown> {
10
- value: V;
11
- label: string;
12
- }
13
- /** A literal value, or a function deriving it from the walk's input. */
14
- export type Resolvable<Input, V> = V | ((input: Input) => V);
15
- /**
16
- * One question of a dialogue. `when` decides whether the step runs at all; a
17
- * skipped step records no answer and falls through to `next`. `next` links to
18
- * the following step: a step id for linear flow, a function of the answer for
19
- * branching, absent to end. `{name}` placeholders in messages and labels are
20
- * filled from the walk's input.
21
- */
22
- interface StepBase<Input> {
23
- message: string;
24
- when?: (input: Input, answers: DialogueAnswers) => boolean;
25
- next?: string | ((answer: unknown, answers: DialogueAnswers, input: Input) => string | null);
26
- }
27
- export interface SelectStep<Input = DialogueAnswers> extends StepBase<Input> {
28
- kind: typeof StepKind.Select;
29
- choices: Resolvable<Input, StepChoice[]>;
30
- initial?: Resolvable<Input, string | number | boolean>;
31
- }
32
- export interface MultiSelectStep<Input = DialogueAnswers> extends StepBase<Input> {
33
- kind: typeof StepKind.MultiSelect;
34
- choices: Resolvable<Input, StepChoice[]>;
35
- initial?: Resolvable<Input, unknown[]>;
36
- required?: boolean;
37
- }
38
- export interface ConfirmStep<Input = DialogueAnswers> extends StepBase<Input> {
39
- kind: typeof StepKind.Confirm;
40
- initial?: Resolvable<Input, boolean>;
41
- }
42
- export interface TextStep<Input = DialogueAnswers> extends StepBase<Input> {
43
- kind: typeof StepKind.Text;
44
- initial?: Resolvable<Input, string>;
45
- validate?: (value: string | undefined) => string | undefined;
46
- }
47
- export type DialogueStep<Input = DialogueAnswers> = SelectStep<Input> | MultiSelectStep<Input> | ConfirmStep<Input> | TextStep<Input>;
48
- /**
49
- * A command's interaction with the user: a graph of steps keyed by id,
50
- * entered at the first key and linked through each step's `next`. Commands
51
- * take dialogues through named slots (e.g. `onNoValue`, `onCollision`) and
52
- * run them with `runDialogueValue`; init flows are linked lists run with
53
- * `runDialogue`. Preset answers (`options.answers`, keyed by step id) skip
54
- * the terminal prompt — that is how tests and non-interactive runs answer.
55
- */
56
- export interface Dialogue<Input = DialogueAnswers> {
57
- steps: Record<string, DialogueStep<Input>>;
58
- }
59
- /**
60
- * Walks a dialogue from its first step, skipping steps whose `when` is
61
- * false, and collects answers by step id. A preset answer in `answers` is
62
- * recorded without prompting; anything else renders in the terminal.
63
- * Returns the cancel symbol as soon as any step is cancelled. Unknown step
64
- * ids throw.
65
- */
66
- export declare function runDialogue<Input>(dialogue: Dialogue<Input>, input: Input, answers?: DialogueAnswers): Promise<DialogueAnswers | symbol>;
67
- /**
68
- * Runs a dialogue and returns the answer of its last executed step — the
69
- * contract for the commands' named dialogue slots. Returns undefined when no
70
- * step ran, or the cancel symbol.
71
- */
72
- export declare function runDialogueValue<Input>(dialogue: Dialogue<Input>, input: Input, answers?: DialogueAnswers): Promise<unknown>;
73
- export {};
74
- //# sourceMappingURL=dialogue.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dialogue.d.ts","sourceRoot":"","sources":["../../src/cli/dialogue.ts"],"names":[],"mappings":"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"}
@@ -1,117 +0,0 @@
1
- // packages/core/src/cli/dialogue.ts
2
- import * as p from "@clack/prompts";
3
- export const StepKind = {
4
- Select: 0,
5
- MultiSelect: 1,
6
- Confirm: 2,
7
- Text: 3,
8
- };
9
- // ---------------------------------------------------------------------------
10
- // Resolving
11
- // ---------------------------------------------------------------------------
12
- function interpolate(template, input) {
13
- const record = (typeof input === "object" && input !== null ? input : {});
14
- return template.replace(/\{(\w+)\}/g, (match, name) => {
15
- const value = record[name];
16
- return value === undefined ? match : String(value);
17
- });
18
- }
19
- function resolveValue(value, input) {
20
- return typeof value === "function" ? value(input) : value;
21
- }
22
- function resolveStep(id, step, input) {
23
- const resolved = { id, kind: step.kind, message: interpolate(step.message, input) };
24
- switch (step.kind) {
25
- case StepKind.Select:
26
- case StepKind.MultiSelect: {
27
- const choices = resolveValue(step.choices, input) ?? [];
28
- resolved.choices = choices.map((choice) => ({ ...choice, label: interpolate(choice.label, input) }));
29
- resolved.initial = resolveValue(step.initial, input);
30
- if (step.kind === StepKind.MultiSelect)
31
- resolved.required = step.required;
32
- return resolved;
33
- }
34
- case StepKind.Confirm:
35
- resolved.initial = resolveValue(step.initial, input);
36
- return resolved;
37
- case StepKind.Text:
38
- resolved.initial = resolveValue(step.initial, input);
39
- resolved.validate = step.validate;
40
- return resolved;
41
- }
42
- }
43
- // ---------------------------------------------------------------------------
44
- // Rendering
45
- // ---------------------------------------------------------------------------
46
- async function render(step) {
47
- switch (step.kind) {
48
- case StepKind.Select:
49
- return p.select({
50
- message: step.message,
51
- options: step.choices ?? [],
52
- initialValue: step.initial,
53
- });
54
- case StepKind.MultiSelect:
55
- return p.multiselect({
56
- message: step.message,
57
- options: step.choices ?? [],
58
- initialValues: step.initial,
59
- required: step.required,
60
- });
61
- case StepKind.Confirm:
62
- return p.confirm({
63
- message: step.message,
64
- initialValue: step.initial ?? false,
65
- });
66
- case StepKind.Text:
67
- return p.text({
68
- message: step.message,
69
- initialValue: step.initial,
70
- validate: step.validate,
71
- });
72
- default:
73
- throw new Error(`unknown step kind ${String(step.kind)}`);
74
- }
75
- }
76
- // ---------------------------------------------------------------------------
77
- // Walking
78
- // ---------------------------------------------------------------------------
79
- /**
80
- * Walks a dialogue from its first step, skipping steps whose `when` is
81
- * false, and collects answers by step id. A preset answer in `answers` is
82
- * recorded without prompting; anything else renders in the terminal.
83
- * Returns the cancel symbol as soon as any step is cancelled. Unknown step
84
- * ids throw.
85
- */
86
- export async function runDialogue(dialogue, input, answers = {}) {
87
- const collected = {};
88
- let id = Object.keys(dialogue.steps)[0] ?? null;
89
- while (id !== null) {
90
- const step = dialogue.steps[id];
91
- if (step === undefined)
92
- throw new Error(`dialogue has no step "${id}"`);
93
- let answer = undefined;
94
- if (step.when === undefined || step.when(input, collected)) {
95
- const preset = answers[id];
96
- answer = preset !== undefined ? preset : await render(resolveStep(id, step, input));
97
- if (typeof answer === "symbol")
98
- return answer;
99
- collected[id] = answer;
100
- }
101
- id = typeof step.next === "function" ? step.next(answer, collected, input) : step.next ?? null;
102
- }
103
- return collected;
104
- }
105
- /**
106
- * Runs a dialogue and returns the answer of its last executed step — the
107
- * contract for the commands' named dialogue slots. Returns undefined when no
108
- * step ran, or the cancel symbol.
109
- */
110
- export async function runDialogueValue(dialogue, input, answers = {}) {
111
- const record = await runDialogue(dialogue, input, answers);
112
- if (typeof record === "symbol")
113
- return record;
114
- const last = Object.keys(record).at(-1);
115
- return last === undefined ? undefined : record[last];
116
- }
117
- //# sourceMappingURL=dialogue.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dialogue.js","sourceRoot":"","sources":["../../src/cli/dialogue.ts"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AAEpC,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,MAAM,EAAO,CAAC;IACd,WAAW,EAAE,CAAC;IACd,OAAO,EAAM,CAAC;IACd,IAAI,EAAS,CAAC;CACN,CAAC;AA2EX,8EAA8E;AAC9E,YAAY;AACZ,8EAA8E;AAE9E,SAAS,WAAW,CAAC,QAAgB,EAAE,KAAc;IACnD,MAAM,MAAM,GAAG,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAA4B,CAAC;IACrG,OAAO,QAAQ,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE,IAAY,EAAE,EAAE;QAC5D,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3B,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,YAAY,CAAW,KAAuC,EAAE,KAAY;IACnF,OAAO,OAAO,KAAK,KAAK,UAAU,CAAC,CAAC,CAAE,KAA6B,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACrF,CAAC;AAED,SAAS,WAAW,CAAQ,EAAU,EAAE,IAAyB,EAAE,KAAY;IAC7E,MAAM,QAAQ,GAAiB,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC;IAClG,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,QAAQ,CAAC,MAAM,CAAC;QACrB,KAAK,QAAQ,CAAC,WAAW,EAAE,CAAC;YAC1B,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;YACxD,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;YACrG,QAAQ,CAAC,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YACrD,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,WAAW;gBAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC1E,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,KAAK,QAAQ,CAAC,OAAO;YACnB,QAAQ,CAAC,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YACrD,OAAO,QAAQ,CAAC;QAClB,KAAK,QAAQ,CAAC,IAAI;YAChB,QAAQ,CAAC,OAAO,GAAI,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YACtD,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;YAClC,OAAO,QAAQ,CAAC;IACpB,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,YAAY;AACZ,8EAA8E;AAE9E,KAAK,UAAU,MAAM,CAAC,IAAkB;IACtC,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,QAAQ,CAAC,MAAM;YAClB,OAAO,CAAC,CAAC,MAAM,CAAC;gBACd,OAAO,EAAO,IAAI,CAAC,OAAO;gBAC1B,OAAO,EAAO,IAAI,CAAC,OAAO,IAAI,EAAE;gBAChC,YAAY,EAAE,IAAI,CAAC,OAAO;aAC3B,CAAC,CAAC;QACL,KAAK,QAAQ,CAAC,WAAW;YACvB,OAAO,CAAC,CAAC,WAAW,CAAC;gBACnB,OAAO,EAAQ,IAAI,CAAC,OAAO;gBAC3B,OAAO,EAAQ,IAAI,CAAC,OAAO,IAAI,EAAE;gBACjC,aAAa,EAAE,IAAI,CAAC,OAAgC;gBACpD,QAAQ,EAAO,IAAI,CAAC,QAAQ;aAC7B,CAAC,CAAC;QACL,KAAK,QAAQ,CAAC,OAAO;YACnB,OAAO,CAAC,CAAC,OAAO,CAAC;gBACf,OAAO,EAAO,IAAI,CAAC,OAAO;gBAC1B,YAAY,EAAG,IAAI,CAAC,OAA+B,IAAI,KAAK;aAC7D,CAAC,CAAC;QACL,KAAK,QAAQ,CAAC,IAAI;YAChB,OAAO,CAAC,CAAC,IAAI,CAAC;gBACZ,OAAO,EAAO,IAAI,CAAC,OAAO;gBAC1B,YAAY,EAAE,IAAI,CAAC,OAA6B;gBAChD,QAAQ,EAAM,IAAI,CAAC,QAAQ;aAC5B,CAAC,CAAC;QACL;YACE,MAAM,IAAI,KAAK,CAAC,qBAAqB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC9D,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,QAAyB,EACzB,KAAY,EACZ,OAAO,GAAoB,EAAE;IAE7B,MAAM,SAAS,GAAoB,EAAE,CAAC;IACtC,IAAI,EAAE,GAAkB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;IAE/D,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC;QACnB,MAAM,IAAI,GAAoC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACjE,IAAI,IAAI,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,EAAE,GAAG,CAAC,CAAC;QAExE,IAAI,MAAM,GAAY,SAAS,CAAC;QAChC,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC;YAC3D,MAAM,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;YAC3B,MAAM,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,WAAW,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;YACpF,IAAI,OAAO,MAAM,KAAK,QAAQ;gBAAE,OAAO,MAAM,CAAC;YAC9C,SAAS,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC;QACzB,CAAC;QAED,EAAE,GAAG,OAAO,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC;IACjG,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,QAAyB,EACzB,KAAY,EACZ,OAAO,GAAoB,EAAE;IAE7B,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IAC3D,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC;IAC9C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACxC,OAAO,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACvD,CAAC"}
@@ -1,10 +0,0 @@
1
- export * from "./types";
2
- export { ConflictDecision, FileState } from "../installer/types";
3
- export { StepKind, runDialogue, runDialogueValue } from "./dialogue";
4
- export type { Dialogue, DialogueStep, DialogueAnswers, StepChoice, Resolvable, SelectStep, MultiSelectStep, ConfirmStep, TextStep, } from "./dialogue";
5
- export { addEntries } from "./commands/add";
6
- export { updateEntries } from "./commands/update";
7
- export { removeEntries } from "./commands/remove";
8
- export { lsEntries } from "./commands/ls";
9
- export { c, sym, lineSuccess, lineWarn, lineInfo, lineError } from "./theme";
10
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AACA,cAAc,SAAS,CAAA;AACvB,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAChE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AACpE,YAAY,EACV,QAAQ,EAAE,YAAY,EAAE,eAAe,EAAE,UAAU,EAAE,UAAU,EAC/D,UAAU,EAAE,eAAe,EAAE,WAAW,EAAE,QAAQ,GACnD,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AACzC,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA"}
package/dist/cli/index.js DELETED
@@ -1,10 +0,0 @@
1
- // packages/core/src/cli/index.ts
2
- export * from "./types";
3
- export { ConflictDecision, FileState } from "../installer/types";
4
- export { StepKind, runDialogue, runDialogueValue } from "./dialogue";
5
- export { addEntries } from "./commands/add";
6
- export { updateEntries } from "./commands/update";
7
- export { removeEntries } from "./commands/remove";
8
- export { lsEntries } from "./commands/ls";
9
- export { c, sym, lineSuccess, lineWarn, lineInfo, lineError } from "./theme";
10
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,cAAc,SAAS,CAAA;AACvB,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAChE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAKpE,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AACzC,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA"}
@@ -1,23 +0,0 @@
1
- export declare const sym: {
2
- success: string;
3
- warn: string;
4
- info: string;
5
- error: string;
6
- search: string;
7
- };
8
- export declare const c: {
9
- bold: import("chalk").ChalkInstance;
10
- dim: import("chalk").ChalkInstance;
11
- key: import("chalk").ChalkInstance;
12
- file: import("chalk").ChalkInstance;
13
- flag: import("chalk").ChalkInstance;
14
- cmd: import("chalk").ChalkInstance;
15
- dir: import("chalk").ChalkInstance;
16
- target: import("chalk").ChalkInstance;
17
- header: import("chalk").ChalkInstance;
18
- };
19
- export declare function lineSuccess(msg: string): string;
20
- export declare function lineWarn(msg: string): string;
21
- export declare function lineInfo(msg: string): string;
22
- export declare function lineError(msg: string): string;
23
- //# sourceMappingURL=theme.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../src/cli/theme.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,GAAG;IACd,OAAO;IACP,IAAI;IACJ,IAAI;IACJ,KAAK;IACL,MAAM;CACP,CAAC;AAEF,eAAO,MAAM,CAAC;IACZ,IAAI;IACJ,GAAG;IACH,GAAG;IACH,IAAI;IACJ,IAAI;IACJ,GAAG;IACH,GAAG;IACH,MAAM;IACN,MAAM;CACP,CAAC;AAEF,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAqC;AACrF,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAmD;AAChG,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAgD;AAC7F,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAgD"}
package/dist/cli/theme.js DELETED
@@ -1,25 +0,0 @@
1
- // packages/core/src/cli/theme.ts
2
- import chalk from "chalk";
3
- export const sym = {
4
- success: chalk.green("✓"),
5
- warn: chalk.yellow("⚠"),
6
- info: chalk.dim("i"),
7
- error: chalk.red("✗"),
8
- search: chalk.cyan("🔍"),
9
- };
10
- export const c = {
11
- bold: chalk.bold,
12
- dim: chalk.dim,
13
- key: chalk.cyan,
14
- file: chalk.magenta,
15
- flag: chalk.yellow.bold,
16
- cmd: chalk.white.bold,
17
- dir: chalk.blue,
18
- target: chalk.green,
19
- header: chalk.bold.underline,
20
- };
21
- export function lineSuccess(msg) { return `${sym.success} ${msg}`; }
22
- export function lineWarn(msg) { return `${sym.warn} ${chalk.yellow(msg)}`; }
23
- export function lineInfo(msg) { return `${sym.info} ${chalk.dim(msg)}`; }
24
- export function lineError(msg) { return `${sym.error} ${chalk.red(msg)}`; }
25
- //# sourceMappingURL=theme.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"theme.js","sourceRoot":"","sources":["../../src/cli/theme.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,CAAC,MAAM,GAAG,GAAG;IACjB,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;IACzB,IAAI,EAAK,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC;IAC1B,IAAI,EAAK,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;IACvB,KAAK,EAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;IACvB,MAAM,EAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;CAC1B,CAAC;AAEF,MAAM,CAAC,MAAM,CAAC,GAAG;IACf,IAAI,EAAI,KAAK,CAAC,IAAI;IAClB,GAAG,EAAK,KAAK,CAAC,GAAG;IACjB,GAAG,EAAK,KAAK,CAAC,IAAI;IAClB,IAAI,EAAI,KAAK,CAAC,OAAO;IACrB,IAAI,EAAI,KAAK,CAAC,MAAM,CAAC,IAAI;IACzB,GAAG,EAAK,KAAK,CAAC,KAAK,CAAC,IAAI;IACxB,GAAG,EAAK,KAAK,CAAC,IAAI;IAClB,MAAM,EAAE,KAAK,CAAC,KAAK;IACnB,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS;CAC7B,CAAC;AAEF,MAAM,UAAU,WAAW,CAAC,GAAW,IAAY,OAAO,GAAG,GAAG,CAAC,OAAO,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC;AACrF,MAAM,UAAU,QAAQ,CAAC,GAAW,IAAe,OAAO,GAAG,GAAG,CAAC,IAAI,KAAK,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AAChG,MAAM,UAAU,QAAQ,CAAC,GAAW,IAAe,OAAO,GAAG,GAAG,CAAC,IAAI,KAAK,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7F,MAAM,UAAU,SAAS,CAAC,GAAW,IAAc,OAAO,GAAG,GAAG,CAAC,KAAK,KAAK,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC"}
@@ -1,45 +0,0 @@
1
- import type { BaseRegistryEntry } from "../registry/types";
2
- import type { RegistryStore } from "../registry/registry.store";
3
- import type { FileSource } from "../installer/types";
4
- import type { Dialogue, DialogueAnswers, StepChoice } from "./dialogue";
5
- /** Options the install-shaped commands (add, update, remove) read. */
6
- export interface InstallOptions {
7
- force?: boolean;
8
- dryRun?: boolean;
9
- /** Preset dialogue answers by step id; skips the terminal prompt. */
10
- answers?: DialogueAnswers;
11
- }
12
- export interface LSOptions {
13
- json?: boolean;
14
- }
15
- /** One install destination: where files land and the manifest tracking them. */
16
- export interface InstallTarget {
17
- label: string;
18
- installDir: string;
19
- store: RegistryStore<BaseRegistryEntry>;
20
- }
21
- /** Where an entry's file contents come from — disk copy, remote fetch, generated. */
22
- export type EntrySource = (entry: BaseRegistryEntry) => FileSource | Promise<FileSource>;
23
- /** Input the install dialogues resolve against: picker choices and `{placeholder}` values. */
24
- export interface InstallInput {
25
- keyChoices?: StepChoice<string>[];
26
- key?: string;
27
- target?: string;
28
- dependents?: string;
29
- missing?: string;
30
- unknown?: string;
31
- }
32
- export interface AddDialogues {
33
- onNoValue?: Dialogue<InstallInput>;
34
- onCollision?: Dialogue<InstallInput>;
35
- }
36
- export interface UpdateDialogues {
37
- onCollision?: Dialogue<InstallInput>;
38
- }
39
- export interface RemoveDialogues {
40
- onNoValue?: Dialogue<InstallInput>;
41
- onCascade?: Dialogue<InstallInput>;
42
- onCollision?: Dialogue<InstallInput>;
43
- onIncomplete?: Dialogue<InstallInput>;
44
- }
45
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/cli/types.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExE,sEAAsE;AACtE,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAG,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,qEAAqE;IACrE,OAAO,CAAC,EAAE,eAAe,CAAC;CAC3B;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,gFAAgF;AAChF,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAO,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAO,aAAa,CAAC,iBAAiB,CAAC,CAAC;CAC9C;AAED,qFAAqF;AACrF,MAAM,MAAM,WAAW,GAAG,CAAC,KAAK,EAAE,iBAAiB,KAAK,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEzF,8FAA8F;AAC9F,MAAM,WAAW,YAAY;IAC3B,UAAU,CAAC,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;IAClC,GAAG,CAAC,EAAS,MAAM,CAAC;IACpB,MAAM,CAAC,EAAM,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAK,MAAM,CAAC;IACpB,OAAO,CAAC,EAAK,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,CAAC,EAAI,QAAQ,CAAC,YAAY,CAAC,CAAC;IACrC,WAAW,CAAC,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,eAAe;IAC9B,WAAW,CAAC,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,CAAC,EAAI,QAAQ,CAAC,YAAY,CAAC,CAAC;IACrC,SAAS,CAAC,EAAI,QAAQ,CAAC,YAAY,CAAC,CAAC;IACrC,WAAW,CAAC,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC;IACrC,YAAY,CAAC,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC;CACvC"}
package/dist/cli/types.js DELETED
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/cli/types.ts"],"names":[],"mappings":""}
@@ -1,30 +0,0 @@
1
- import { type G3nConfig, type G3nConfigFile, type G3nuiConfig, type G3nerateConfig, type SkillsConfig } from "./types";
2
- export declare function getConfigPath(projectRoot: string): string;
3
- /**
4
- * Directory that owns the project's `.g3n.config.json`: the nearest ancestor
5
- * of `fromDir` holding the config file, else the root of the git repository
6
- * containing `fromDir`. Returns null outside a git repository when no config
7
- * exists on the way up — g3n projects are always anchored to a git repo.
8
- */
9
- export declare function resolveProjectRoot(fromDir?: string): string | null;
10
- /**
11
- * Loads `.g3n.config.json` from the project root as a fully-defaulted view:
12
- * sections missing on disk read as their defaults.
13
- */
14
- export declare function loadConfig(projectRoot: string): Promise<G3nConfig>;
15
- /** Every key optional at every depth, so a caller can name one setting alone. */
16
- type DeepPartial<T> = T extends readonly unknown[] ? T : T extends object ? {
17
- [K in keyof T]?: DeepPartial<T[K]>;
18
- } : T;
19
- /**
20
- * Deep-merges updates into the existing config file and writes back to disk.
21
- * Only sections already on disk or named in `updates` are written — a
22
- * package's init never materializes another package's section.
23
- */
24
- export declare function saveConfig(projectRoot: string, updates: DeepPartial<G3nConfigFile>): Promise<G3nConfig>;
25
- export declare function loadG3nuiConfig(projectRoot: string): Promise<G3nuiConfig>;
26
- export declare function loadG3nerateConfig(projectRoot: string): Promise<G3nerateConfig>;
27
- export declare function loadSkillsConfig(projectRoot: string): Promise<SkillsConfig>;
28
- export declare function configExists(projectRoot: string): Promise<boolean>;
29
- export {};
30
- //# sourceMappingURL=config.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"AAIA,OAAO,EAGL,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,YAAY,EAClB,MAAM,SAAS,CAAC;AAYjB,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,GAAE,MAAsB,GAAG,MAAM,GAAG,IAAI,CASjF;AAYD;;;GAGG;AACH,wBAAsB,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAExE;AAMD,iFAAiF;AACjF,KAAK,WAAW,CAAC,CAAC,IAChB,CAAC,SAAS,SAAS,OAAO,EAAE,GAAG,CAAC,GAC9B,CAAC,SAAS,MAAM,GAAG;KAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,GACzD,CAAC,CAAC;AAEN;;;;GAIG;AACH,wBAAsB,UAAU,CAC9B,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,WAAW,CAAC,aAAa,CAAC,GAClC,OAAO,CAAC,SAAS,CAAC,CAOpB;AAMD,wBAAsB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAE/E;AAED,wBAAsB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAErF;AAED,wBAAsB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAEjF;AAED,wBAAsB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAExE"}
@@ -1,77 +0,0 @@
1
- // packages/core/src/config/config.ts
2
- import { existsSync } from "node:fs";
3
- import { dirname, join } from "node:path";
4
- import { deepMerge } from "../utils/merge";
5
- import { G3nConfigFileSchema, G3nConfigSchema, } from "./types";
6
- if ("window" in globalThis) {
7
- throw new Error("@g3nomaly/core config utilities are CLI-only");
8
- }
9
- // ---------------------------------------------------------------------------
10
- // Path helper
11
- // ---------------------------------------------------------------------------
12
- const CONFIG_FILE = ".g3n.config.json";
13
- export function getConfigPath(projectRoot) {
14
- return join(projectRoot, CONFIG_FILE);
15
- }
16
- /**
17
- * Directory that owns the project's `.g3n.config.json`: the nearest ancestor
18
- * of `fromDir` holding the config file, else the root of the git repository
19
- * containing `fromDir`. Returns null outside a git repository when no config
20
- * exists on the way up — g3n projects are always anchored to a git repo.
21
- */
22
- export function resolveProjectRoot(fromDir = process.cwd()) {
23
- let dir = fromDir;
24
- while (true) {
25
- if (existsSync(join(dir, CONFIG_FILE)))
26
- return dir;
27
- if (existsSync(join(dir, ".git")))
28
- return dir;
29
- const parent = dirname(dir);
30
- if (parent === dir)
31
- return null;
32
- dir = parent;
33
- }
34
- }
35
- // ---------------------------------------------------------------------------
36
- // Read
37
- // ---------------------------------------------------------------------------
38
- async function readConfigFile(projectRoot) {
39
- const file = Bun.file(getConfigPath(projectRoot));
40
- if (!(await file.exists()))
41
- return {};
42
- return G3nConfigFileSchema.parse(await file.json());
43
- }
44
- /**
45
- * Loads `.g3n.config.json` from the project root as a fully-defaulted view:
46
- * sections missing on disk read as their defaults.
47
- */
48
- export async function loadConfig(projectRoot) {
49
- return G3nConfigSchema.parse(await readConfigFile(projectRoot));
50
- }
51
- /**
52
- * Deep-merges updates into the existing config file and writes back to disk.
53
- * Only sections already on disk or named in `updates` are written — a
54
- * package's init never materializes another package's section.
55
- */
56
- export async function saveConfig(projectRoot, updates) {
57
- const existing = await readConfigFile(projectRoot);
58
- const merged = G3nConfigFileSchema.parse(deepMerge(existing, updates));
59
- await Bun.write(getConfigPath(projectRoot), JSON.stringify(merged, null, 2));
60
- return G3nConfigSchema.parse(merged);
61
- }
62
- // ---------------------------------------------------------------------------
63
- // Section accessors
64
- // ---------------------------------------------------------------------------
65
- export async function loadG3nuiConfig(projectRoot) {
66
- return (await loadConfig(projectRoot)).g3nui;
67
- }
68
- export async function loadG3nerateConfig(projectRoot) {
69
- return (await loadConfig(projectRoot)).g3nerate;
70
- }
71
- export async function loadSkillsConfig(projectRoot) {
72
- return (await loadConfig(projectRoot)).skills;
73
- }
74
- export async function configExists(projectRoot) {
75
- return Bun.file(getConfigPath(projectRoot)).exists();
76
- }
77
- //# sourceMappingURL=config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- export type { G3nuiSettings, G3nuiConfig, G3nerateSettings, G3nerateConfig, SkillTarget, SkillsInstallDirs, SkillsSettings, SkillsConfig, G3nConfigFile, G3nConfig, } from "./types";
2
- export { G3nuiSettingsSchema, G3nuiConfigSchema, G3nerateSettingsSchema, G3nerateConfigSchema, SkillTargetSchema, SkillsInstallDirsSchema, SkillsSettingsSchema, SkillsConfigSchema, G3nConfigFileSchema, G3nConfigSchema, } from "./types";
3
- export { getConfigPath, resolveProjectRoot, loadConfig, saveConfig, loadG3nuiConfig, loadG3nerateConfig, loadSkillsConfig, configExists, } from "./config";
4
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AACA,YAAY,EACV,aAAa,EACb,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,cAAc,EACd,YAAY,EACZ,aAAa,EACb,SAAS,GACV,MAAM,SAAS,CAAC;AAEjB,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,sBAAsB,EACtB,oBAAoB,EACpB,iBAAiB,EACjB,uBAAuB,EACvB,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,GAChB,MAAM,SAAS,CAAC;AAEjB,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,UAAU,EACV,UAAU,EACV,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,YAAY,GACb,MAAM,UAAU,CAAC"}
@@ -1,3 +0,0 @@
1
- export { G3nuiSettingsSchema, G3nuiConfigSchema, G3nerateSettingsSchema, G3nerateConfigSchema, SkillTargetSchema, SkillsInstallDirsSchema, SkillsSettingsSchema, SkillsConfigSchema, G3nConfigFileSchema, G3nConfigSchema, } from "./types";
2
- export { getConfigPath, resolveProjectRoot, loadConfig, saveConfig, loadG3nuiConfig, loadG3nerateConfig, loadSkillsConfig, configExists, } from "./config";
3
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAcA,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,sBAAsB,EACtB,oBAAoB,EACpB,iBAAiB,EACjB,uBAAuB,EACvB,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,GAChB,MAAM,SAAS,CAAC;AAEjB,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,UAAU,EACV,UAAU,EACV,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,YAAY,GACb,MAAM,UAAU,CAAC"}
@@ -1,140 +0,0 @@
1
- import { z } from "zod";
2
- export declare const G3nuiSettingsSchema: z.ZodObject<{
3
- componentsDir: z.ZodDefault<z.ZodString>;
4
- includeDebugFiles: z.ZodDefault<z.ZodBoolean>;
5
- includeMetaFiles: z.ZodDefault<z.ZodBoolean>;
6
- manifestFormat: z.ZodDefault<z.ZodEnum<{
7
- json: "json";
8
- ts: "ts";
9
- }>>;
10
- registeredPackages: z.ZodDefault<z.ZodArray<z.ZodString>>;
11
- }, z.core.$strip>;
12
- export declare const G3nuiConfigSchema: z.ZodObject<{
13
- settings: z.ZodDefault<z.ZodObject<{
14
- componentsDir: z.ZodDefault<z.ZodString>;
15
- includeDebugFiles: z.ZodDefault<z.ZodBoolean>;
16
- includeMetaFiles: z.ZodDefault<z.ZodBoolean>;
17
- manifestFormat: z.ZodDefault<z.ZodEnum<{
18
- json: "json";
19
- ts: "ts";
20
- }>>;
21
- registeredPackages: z.ZodDefault<z.ZodArray<z.ZodString>>;
22
- }, z.core.$strip>>;
23
- }, z.core.$strip>;
24
- export declare const G3nerateSettingsSchema: z.ZodObject<{
25
- outputDir: z.ZodDefault<z.ZodString>;
26
- }, z.core.$strip>;
27
- export declare const G3nerateConfigSchema: z.ZodObject<{
28
- settings: z.ZodDefault<z.ZodObject<{
29
- outputDir: z.ZodDefault<z.ZodString>;
30
- }, z.core.$strip>>;
31
- }, z.core.$strip>;
32
- export declare const SkillTargetSchema: z.ZodEnum<{
33
- claude: "claude";
34
- codex: "codex";
35
- }>;
36
- export declare const SkillsInstallDirsSchema: z.ZodObject<{
37
- claude: z.ZodDefault<z.ZodString>;
38
- codex: z.ZodDefault<z.ZodString>;
39
- }, z.core.$strip>;
40
- export declare const SkillsSettingsSchema: z.ZodObject<{
41
- filetreeRoot: z.ZodDefault<z.ZodString>;
42
- targets: z.ZodDefault<z.ZodArray<z.ZodEnum<{
43
- claude: "claude";
44
- codex: "codex";
45
- }>>>;
46
- installDirs: z.ZodDefault<z.ZodObject<{
47
- claude: z.ZodDefault<z.ZodString>;
48
- codex: z.ZodDefault<z.ZodString>;
49
- }, z.core.$strip>>;
50
- }, z.core.$strip>;
51
- export declare const SkillsConfigSchema: z.ZodObject<{
52
- settings: z.ZodDefault<z.ZodObject<{
53
- filetreeRoot: z.ZodDefault<z.ZodString>;
54
- targets: z.ZodDefault<z.ZodArray<z.ZodEnum<{
55
- claude: "claude";
56
- codex: "codex";
57
- }>>>;
58
- installDirs: z.ZodDefault<z.ZodObject<{
59
- claude: z.ZodDefault<z.ZodString>;
60
- codex: z.ZodDefault<z.ZodString>;
61
- }, z.core.$strip>>;
62
- }, z.core.$strip>>;
63
- }, z.core.$strip>;
64
- /** What `.g3n.config.json` holds on disk: only the sections a package's init has written. */
65
- export declare const G3nConfigFileSchema: z.ZodObject<{
66
- g3nui: z.ZodOptional<z.ZodObject<{
67
- settings: z.ZodDefault<z.ZodObject<{
68
- componentsDir: z.ZodDefault<z.ZodString>;
69
- includeDebugFiles: z.ZodDefault<z.ZodBoolean>;
70
- includeMetaFiles: z.ZodDefault<z.ZodBoolean>;
71
- manifestFormat: z.ZodDefault<z.ZodEnum<{
72
- json: "json";
73
- ts: "ts";
74
- }>>;
75
- registeredPackages: z.ZodDefault<z.ZodArray<z.ZodString>>;
76
- }, z.core.$strip>>;
77
- }, z.core.$strip>>;
78
- g3nerate: z.ZodOptional<z.ZodObject<{
79
- settings: z.ZodDefault<z.ZodObject<{
80
- outputDir: z.ZodDefault<z.ZodString>;
81
- }, z.core.$strip>>;
82
- }, z.core.$strip>>;
83
- skills: z.ZodOptional<z.ZodObject<{
84
- settings: z.ZodDefault<z.ZodObject<{
85
- filetreeRoot: z.ZodDefault<z.ZodString>;
86
- targets: z.ZodDefault<z.ZodArray<z.ZodEnum<{
87
- claude: "claude";
88
- codex: "codex";
89
- }>>>;
90
- installDirs: z.ZodDefault<z.ZodObject<{
91
- claude: z.ZodDefault<z.ZodString>;
92
- codex: z.ZodDefault<z.ZodString>;
93
- }, z.core.$strip>>;
94
- }, z.core.$strip>>;
95
- }, z.core.$strip>>;
96
- }, z.core.$strip>;
97
- /** The fully-defaulted view every consumer reads through `loadConfig`. */
98
- export declare const G3nConfigSchema: z.ZodObject<{
99
- g3nui: z.ZodDefault<z.ZodObject<{
100
- settings: z.ZodDefault<z.ZodObject<{
101
- componentsDir: z.ZodDefault<z.ZodString>;
102
- includeDebugFiles: z.ZodDefault<z.ZodBoolean>;
103
- includeMetaFiles: z.ZodDefault<z.ZodBoolean>;
104
- manifestFormat: z.ZodDefault<z.ZodEnum<{
105
- json: "json";
106
- ts: "ts";
107
- }>>;
108
- registeredPackages: z.ZodDefault<z.ZodArray<z.ZodString>>;
109
- }, z.core.$strip>>;
110
- }, z.core.$strip>>;
111
- g3nerate: z.ZodDefault<z.ZodObject<{
112
- settings: z.ZodDefault<z.ZodObject<{
113
- outputDir: z.ZodDefault<z.ZodString>;
114
- }, z.core.$strip>>;
115
- }, z.core.$strip>>;
116
- skills: z.ZodDefault<z.ZodObject<{
117
- settings: z.ZodDefault<z.ZodObject<{
118
- filetreeRoot: z.ZodDefault<z.ZodString>;
119
- targets: z.ZodDefault<z.ZodArray<z.ZodEnum<{
120
- claude: "claude";
121
- codex: "codex";
122
- }>>>;
123
- installDirs: z.ZodDefault<z.ZodObject<{
124
- claude: z.ZodDefault<z.ZodString>;
125
- codex: z.ZodDefault<z.ZodString>;
126
- }, z.core.$strip>>;
127
- }, z.core.$strip>>;
128
- }, z.core.$strip>>;
129
- }, z.core.$strip>;
130
- export type G3nuiSettings = z.infer<typeof G3nuiSettingsSchema>;
131
- export type G3nuiConfig = z.infer<typeof G3nuiConfigSchema>;
132
- export type G3nerateSettings = z.infer<typeof G3nerateSettingsSchema>;
133
- export type G3nerateConfig = z.infer<typeof G3nerateConfigSchema>;
134
- export type SkillTarget = z.infer<typeof SkillTargetSchema>;
135
- export type SkillsInstallDirs = z.infer<typeof SkillsInstallDirsSchema>;
136
- export type SkillsSettings = z.infer<typeof SkillsSettingsSchema>;
137
- export type SkillsConfig = z.infer<typeof SkillsConfigSchema>;
138
- export type G3nConfigFile = z.infer<typeof G3nConfigFileSchema>;
139
- export type G3nConfig = z.infer<typeof G3nConfigSchema>;
140
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAQxB,eAAO,MAAM,mBAAmB;;;;;;;;;iBAW9B,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;;;;;;;;iBAE5B,CAAC;AAEH,eAAO,MAAM,sBAAsB;;iBAGjC,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;iBAE/B,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;EAA8B,CAAC;AAE7D,eAAO,MAAM,uBAAuB;;;iBAKlC,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;;;;iBAO/B,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;iBAE7B,CAAC;AAMH,6FAA6F;AAC7F,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAI9B,CAAC;AAEH,0EAA0E;AAC1E,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAI1B,CAAC;AAMH,MAAM,MAAM,aAAa,GAAS,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AACtE,MAAM,MAAM,WAAW,GAAW,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AACpE,MAAM,MAAM,gBAAgB,GAAM,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AACzE,MAAM,MAAM,cAAc,GAAQ,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AACvE,MAAM,MAAM,WAAW,GAAW,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AACpE,MAAM,MAAM,iBAAiB,GAAK,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAC1E,MAAM,MAAM,cAAc,GAAQ,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AACvE,MAAM,MAAM,YAAY,GAAU,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AACrE,MAAM,MAAM,aAAa,GAAS,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AACtE,MAAM,MAAM,SAAS,GAAa,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC"}