agentsx 0.1.3 → 0.1.4

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.
@@ -4,7 +4,7 @@ import { conflictDefaultKey, saveState } from "./state.js";
4
4
  import { selectTargets } from "./targets.js";
5
5
  import { executeSyncEngine } from "./sync-engine.js";
6
6
  import { requireRemote } from "./remote.js";
7
- import { combineJsonPathSelections, parseCliJsonPathSelections, promptInteractiveJsonPathSelections, } from "./target-selectors.js";
7
+ import { combineJsonPathSelections, parseCliJsonPathSelections, promptInteractiveCombinedSelection, } from "./target-selectors.js";
8
8
  function timestampIso() {
9
9
  return new Date().toISOString();
10
10
  }
@@ -14,20 +14,32 @@ function commitMessage(command, agent) {
14
14
  export async function runSyncCommand(command, agentInput, targetIds, conflictPolicy, jsonPathRules = []) {
15
15
  const adapter = resolveAgentAdapter(agentInput);
16
16
  const { state, remote } = await requireRemote();
17
+ const cwd = process.cwd();
17
18
  const remoteStatus = prepareRemoteBranch(remote.mirrorPath, remote.defaultBranch);
18
19
  if (remoteStatus === "initialized") {
19
20
  console.log(`원격 브랜치 origin/${remote.defaultBranch}가 없어 자동 초기화했습니다.`);
20
21
  }
21
- const selection = await selectTargets(adapter, targetIds);
22
- if (selection.targets.length === 0) {
22
+ const requestedTargets = targetIds.map((item) => item.trim()).filter(Boolean);
23
+ let selectedTargets = [];
24
+ let interactiveTargets = false;
25
+ let interactiveJsonPathSelections = {};
26
+ if (requestedTargets.length === 0) {
27
+ const interactiveSelection = await promptInteractiveCombinedSelection(command, adapter, adapter.targets, cwd, remote.mirrorPath);
28
+ selectedTargets = interactiveSelection.selectedTargets;
29
+ interactiveTargets = true;
30
+ interactiveJsonPathSelections = interactiveSelection.jsonPathSelectionsByTarget;
31
+ }
32
+ else {
33
+ const selection = await selectTargets(adapter, requestedTargets);
34
+ selectedTargets = selection.targets;
35
+ interactiveTargets = selection.interactive;
36
+ }
37
+ if (selectedTargets.length === 0) {
23
38
  throw new Error("동기화할 대상을 최소 1개 이상 선택해야 합니다.");
24
39
  }
25
- const cliJsonPathSelections = parseCliJsonPathSelections(selection.targets, jsonPathRules);
26
- const interactiveJsonPathSelections = selection.interactive
27
- ? await promptInteractiveJsonPathSelections(command, adapter, selection.targets, process.cwd(), remote.mirrorPath)
28
- : {};
40
+ const cliJsonPathSelections = parseCliJsonPathSelections(selectedTargets, jsonPathRules);
29
41
  const jsonPathSelectionsByTarget = combineJsonPathSelections(cliJsonPathSelections, interactiveJsonPathSelections);
30
- const selectionFingerprint = selection.targets.map((target) => {
42
+ const selectionFingerprint = selectedTargets.map((target) => {
31
43
  const selectors = jsonPathSelectionsByTarget[target.id];
32
44
  if (!selectors || selectors.length === 0) {
33
45
  return `${target.id}:*`;
@@ -38,12 +50,12 @@ export async function runSyncCommand(command, agentInput, targetIds, conflictPol
38
50
  const summary = await executeSyncEngine({
39
51
  command,
40
52
  adapter,
41
- targets: selection.targets,
42
- cwd: process.cwd(),
53
+ targets: selectedTargets,
54
+ cwd,
43
55
  mirrorPath: remote.mirrorPath,
44
56
  state,
45
57
  conflictStateKey: conflictKey,
46
- interactiveTargets: selection.interactive,
58
+ interactiveTargets,
47
59
  explicitPolicy: conflictPolicy,
48
60
  jsonPathSelectionsByTarget,
49
61
  });
@@ -1 +1 @@
1
- {"version":3,"file":"run-sync-command.js","sourceRoot":"","sources":["../../src/core/run-sync-command.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run-sync-command.js","sourceRoot":"","sources":["../../src/core/run-sync-command.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,8 @@
1
1
  import type { AgentAdapter, SyncCommand, TargetSpec } from "../types.js";
2
2
  export declare function parseCliJsonPathSelections(selectedTargets: TargetSpec[], rules: string[]): Record<string, string[]>;
3
- export declare function promptInteractiveJsonPathSelections(command: SyncCommand, adapter: AgentAdapter, targets: TargetSpec[], cwd: string, mirrorPath: string): Promise<Record<string, string[]>>;
3
+ export interface InteractiveSelectionResult {
4
+ selectedTargets: TargetSpec[];
5
+ jsonPathSelectionsByTarget: Record<string, string[]>;
6
+ }
7
+ export declare function promptInteractiveCombinedSelection(command: SyncCommand, adapter: AgentAdapter, targets: TargetSpec[], cwd: string, mirrorPath: string): Promise<InteractiveSelectionResult>;
4
8
  export declare function combineJsonPathSelections(cliSelections: Record<string, string[]>, interactiveSelections: Record<string, string[]>): Record<string, string[]>;
@@ -1,7 +1,8 @@
1
+ import path from "node:path";
1
2
  import { exists } from "../utils/fs.js";
2
3
  import { getLocalTargetBase, getRemoteTargetBase } from "./layout.js";
3
- import { isStructuredConfigTarget, parseJsonPathRule, resolveTargetFormat, } from "./structured-config.js";
4
- import { promptTreeJsonPathSelection } from "../ui/structured-tree.js";
4
+ import { isStructuredConfigTarget, parseJsonPathRule, readStructuredFile, resolveTargetFormat, } from "./structured-config.js";
5
+ import { promptCombinedTargetAndJsonTreeSelection, } from "../ui/structured-tree.js";
5
6
  function ensureSelectedTargetMap(targets) {
6
7
  return new Map(targets.map((target) => [target.id, target]));
7
8
  }
@@ -37,7 +38,7 @@ function mergeSelections(base, extra) {
37
38
  }
38
39
  return merged;
39
40
  }
40
- function resolveSourcePathForTree(command, adapter, target, cwd, mirrorPath) {
41
+ function resolveSourceForTarget(command, adapter, target, cwd, mirrorPath) {
41
42
  const localPath = getLocalTargetBase(target, cwd);
42
43
  const remotePath = getRemoteTargetBase(mirrorPath, adapter, target);
43
44
  if (command === "push") {
@@ -48,32 +49,46 @@ function resolveSourcePathForTree(command, adapter, target, cwd, mirrorPath) {
48
49
  }
49
50
  return { path: localPath, sourceKind: "local" };
50
51
  }
51
- export async function promptInteractiveJsonPathSelections(command, adapter, targets, cwd, mirrorPath) {
52
- const selected = {};
52
+ export async function promptInteractiveCombinedSelection(command, adapter, targets, cwd, mirrorPath) {
53
+ const inputs = [];
53
54
  for (const target of targets) {
54
- if (!isStructuredConfigTarget(target)) {
55
- continue;
56
- }
57
- const source = resolveSourcePathForTree(command, adapter, target, cwd, mirrorPath);
58
- let sourcePath = source.path;
59
- let sourceKind = source.sourceKind;
55
+ const preferred = resolveSourceForTarget(command, adapter, target, cwd, mirrorPath);
56
+ let sourcePath = preferred.path;
57
+ let sourceKind = preferred.sourceKind;
60
58
  if (command === "sync" && !(await exists(sourcePath))) {
61
- const remotePath = getRemoteTargetBase(mirrorPath, adapter, target);
62
- if (await exists(remotePath)) {
63
- sourcePath = remotePath;
59
+ const fallbackRemote = getRemoteTargetBase(mirrorPath, adapter, target);
60
+ if (await exists(fallbackRemote)) {
61
+ sourcePath = fallbackRemote;
64
62
  sourceKind = "remote";
65
63
  }
66
64
  }
67
- if (!(await exists(sourcePath))) {
68
- continue;
65
+ let rootValue = undefined;
66
+ if (target.kind === "file" && isStructuredConfigTarget(target) && await exists(sourcePath)) {
67
+ const format = resolveTargetFormat(target, sourcePath);
68
+ rootValue = await readStructuredFile(sourcePath, format);
69
69
  }
70
- const format = resolveTargetFormat(target, sourcePath);
71
- const expressions = await promptTreeJsonPathSelection(sourcePath, format, `${target.label} / source=${sourceKind}`);
72
- if (expressions.length > 0) {
73
- selected[target.id] = expressions;
70
+ inputs.push({
71
+ targetId: target.id,
72
+ label: target.label,
73
+ description: `${target.description} (${path.basename(sourcePath)})`,
74
+ sourceKind,
75
+ sourcePath,
76
+ rootValue,
77
+ });
78
+ }
79
+ const selection = await promptCombinedTargetAndJsonTreeSelection(`? ${adapter.displayName}에서 동기화할 설정 항목을 선택하세요.`, inputs);
80
+ const byId = ensureSelectedTargetMap(targets);
81
+ const selectedTargets = [];
82
+ for (const targetId of selection.selectedTargetIds) {
83
+ const target = byId.get(targetId);
84
+ if (target) {
85
+ selectedTargets.push(target);
74
86
  }
75
87
  }
76
- return selected;
88
+ return {
89
+ selectedTargets,
90
+ jsonPathSelectionsByTarget: selection.jsonPathSelectionsByTarget,
91
+ };
77
92
  }
78
93
  export function combineJsonPathSelections(cliSelections, interactiveSelections) {
79
94
  return mergeSelections(cliSelections, interactiveSelections);
@@ -1 +1 @@
1
- {"version":3,"file":"target-selectors.js","sourceRoot":"","sources":["../../src/core/target-selectors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"target-selectors.js","sourceRoot":"","sources":["../../src/core/target-selectors.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -50,7 +50,7 @@ async function main() {
50
50
  programName: "agentsx",
51
51
  help: "both",
52
52
  version: {
53
- value: "0.1.1",
53
+ value: "0.1.3",
54
54
  mode: "option",
55
55
  },
56
56
  });
@@ -1,2 +1,13 @@
1
- import type { ConfigFormat } from "../types.js";
2
- export declare function promptTreeJsonPathSelection(sourceFilePath: string, format: ConfigFormat, title: string): Promise<string[]>;
1
+ export interface CombinedTreeTargetInput {
2
+ targetId: string;
3
+ label: string;
4
+ description: string;
5
+ sourceKind: "local" | "remote";
6
+ sourcePath: string;
7
+ rootValue: unknown | undefined;
8
+ }
9
+ export interface CombinedTreeSelection {
10
+ selectedTargetIds: string[];
11
+ jsonPathSelectionsByTarget: Record<string, string[]>;
12
+ }
13
+ export declare function promptCombinedTargetAndJsonTreeSelection(title: string, inputs: CombinedTreeTargetInput[]): Promise<CombinedTreeSelection>;
@@ -1,7 +1,6 @@
1
1
  import path from "node:path";
2
2
  import readline from "node:readline";
3
- import { readStructuredFile, segmentsToJsonPath } from "../core/structured-config.js";
4
- function valueSummary(value) {
3
+ function nodeSummary(value) {
5
4
  if (Array.isArray(value)) {
6
5
  return `array(${value.length})`;
7
6
  }
@@ -12,15 +11,25 @@ function valueSummary(value) {
12
11
  if (!text) {
13
12
  return "null";
14
13
  }
15
- return text.length > 32 ? `${text.slice(0, 29)}...` : text;
14
+ return text.length > 48 ? `${text.slice(0, 45)}...` : text;
16
15
  }
17
- function nodeLabel(node) {
18
- if (node.parentId === undefined) {
19
- return `${node.keyLabel} (${valueSummary(node.value)})`;
16
+ function toJsonPath(segments) {
17
+ let output = "$";
18
+ for (const segment of segments) {
19
+ if (typeof segment === "number") {
20
+ output += `[${segment}]`;
21
+ continue;
22
+ }
23
+ if (/^[A-Za-z_][A-Za-z0-9_]*$/.test(segment)) {
24
+ output += `.${segment}`;
25
+ continue;
26
+ }
27
+ const escaped = segment.replace(/\\/g, "\\\\").replace(/'/g, "\\'");
28
+ output += `['${escaped}']`;
20
29
  }
21
- return `${node.keyLabel}: ${valueSummary(node.value)}`;
30
+ return output;
22
31
  }
23
- function buildChildrenEntries(value) {
32
+ function childEntries(value) {
24
33
  if (Array.isArray(value)) {
25
34
  return value.map((item, index) => ({ key: index, value: item }));
26
35
  }
@@ -29,169 +38,207 @@ function buildChildrenEntries(value) {
29
38
  }
30
39
  return [];
31
40
  }
32
- function buildTree(sourceFilePath, rootValue) {
33
- const map = new Map();
41
+ function buildTree(inputs) {
42
+ const nodes = new Map();
34
43
  let seq = 0;
35
- function addNode(keyLabel, jsonPath, value, parentId) {
44
+ const createNode = (partial) => {
36
45
  const id = `n${seq}`;
37
46
  seq += 1;
38
- map.set(id, {
39
- id,
40
- keyLabel,
41
- jsonPath,
42
- value,
43
- parentId,
44
- children: [],
45
- });
46
- if (parentId) {
47
- const parent = map.get(parentId);
47
+ nodes.set(id, { id, children: [], ...partial });
48
+ if (partial.parentId) {
49
+ const parent = nodes.get(partial.parentId);
48
50
  if (parent) {
49
51
  parent.children.push(id);
50
52
  }
51
53
  }
52
54
  return id;
53
- }
54
- const rootLabel = path.basename(sourceFilePath);
55
- const rootId = addNode(rootLabel, "$", rootValue, undefined);
56
- function walk(parentId, segments, value) {
57
- const entries = buildChildrenEntries(value);
58
- for (const entry of entries) {
55
+ };
56
+ const rootId = createNode({
57
+ parentId: undefined,
58
+ kind: "target",
59
+ targetId: "__root__",
60
+ label: "동기화 설정 트리",
61
+ sourceLabel: undefined,
62
+ jsonPath: undefined,
63
+ value: null,
64
+ });
65
+ const addJsonChildren = (parentId, targetId, value, segments) => {
66
+ for (const entry of childEntries(value)) {
59
67
  const nextSegments = [...segments, entry.key];
60
- const childPath = segmentsToJsonPath(nextSegments);
61
- const childId = addNode(String(entry.key), childPath, entry.value, parentId);
62
- walk(childId, nextSegments, entry.value);
68
+ const nextPath = toJsonPath(nextSegments);
69
+ const childId = createNode({
70
+ parentId,
71
+ kind: "json",
72
+ targetId,
73
+ label: String(entry.key),
74
+ sourceLabel: undefined,
75
+ jsonPath: nextPath,
76
+ value: entry.value,
77
+ });
78
+ addJsonChildren(childId, targetId, entry.value, nextSegments);
63
79
  }
64
- }
65
- walk(rootId, [], rootValue);
66
- return map;
67
- }
68
- function selectionState(nodeId, tree, selected) {
69
- const node = tree.get(nodeId);
70
- if (!node) {
71
- return "none";
72
- }
73
- if (node.children.length === 0) {
74
- return selected.has(nodeId) ? "all" : "none";
75
- }
76
- let allChildrenAll = true;
77
- let anyChildSelected = false;
78
- for (const childId of node.children) {
79
- const childState = selectionState(childId, tree, selected);
80
- if (childState !== "all") {
81
- allChildrenAll = false;
82
- }
83
- if (childState !== "none") {
84
- anyChildSelected = true;
85
- }
86
- }
87
- const selfSelected = selected.has(nodeId);
88
- if (selfSelected && allChildrenAll) {
89
- return "all";
90
- }
91
- if (!selfSelected && !anyChildSelected) {
92
- return "none";
93
- }
94
- return "partial";
95
- }
96
- function gatherDescendants(nodeId, tree) {
97
- const acc = [];
98
- const stack = [nodeId];
99
- while (stack.length > 0) {
100
- const current = stack.pop();
101
- if (!current) {
102
- continue;
103
- }
104
- acc.push(current);
105
- const node = tree.get(current);
106
- if (!node) {
107
- continue;
108
- }
109
- for (const childId of node.children) {
110
- stack.push(childId);
80
+ };
81
+ for (const input of inputs) {
82
+ const targetNodeId = createNode({
83
+ parentId: rootId,
84
+ kind: "target",
85
+ targetId: input.targetId,
86
+ label: input.label,
87
+ sourceLabel: `source=${input.sourceKind}`,
88
+ jsonPath: undefined,
89
+ value: input.description,
90
+ });
91
+ if (input.rootValue !== undefined) {
92
+ const fileNodeId = createNode({
93
+ parentId: targetNodeId,
94
+ kind: "json",
95
+ targetId: input.targetId,
96
+ label: path.basename(input.sourcePath),
97
+ sourceLabel: undefined,
98
+ jsonPath: "$",
99
+ value: input.rootValue,
100
+ });
101
+ addJsonChildren(fileNodeId, input.targetId, input.rootValue, []);
111
102
  }
112
103
  }
113
- return acc;
104
+ return { nodes, rootId };
114
105
  }
115
- function visibleRows(rootId, tree, expanded) {
106
+ function visibleRows(rootId, nodes, expanded) {
116
107
  const rows = [];
117
- function walk(nodeId, depth) {
108
+ const walk = (nodeId, depth) => {
118
109
  rows.push({ id: nodeId, depth });
119
110
  if (!expanded.has(nodeId)) {
120
111
  return;
121
112
  }
122
- const node = tree.get(nodeId);
113
+ const node = nodes.get(nodeId);
123
114
  if (!node) {
124
115
  return;
125
116
  }
126
117
  for (const childId of node.children) {
127
118
  walk(childId, depth + 1);
128
119
  }
129
- }
120
+ };
130
121
  walk(rootId, 0);
131
122
  return rows;
132
123
  }
133
- function canonicalizeSelectedNodeIds(tree, selected) {
134
- const canonical = [];
135
- for (const nodeId of selected) {
136
- const node = tree.get(nodeId);
124
+ function descendants(nodeId, nodes) {
125
+ const out = [];
126
+ const stack = [nodeId];
127
+ while (stack.length > 0) {
128
+ const current = stack.pop();
129
+ if (!current) {
130
+ continue;
131
+ }
132
+ out.push(current);
133
+ const node = nodes.get(current);
137
134
  if (!node) {
138
135
  continue;
139
136
  }
140
- let parentId = node.parentId;
141
- let hasSelectedAncestor = false;
142
- while (parentId) {
143
- if (selected.has(parentId)) {
144
- hasSelectedAncestor = true;
145
- break;
146
- }
147
- parentId = tree.get(parentId)?.parentId;
137
+ for (const childId of node.children) {
138
+ stack.push(childId);
148
139
  }
149
- if (!hasSelectedAncestor) {
150
- canonical.push(nodeId);
140
+ }
141
+ return out;
142
+ }
143
+ function selectionState(nodeId, nodes, selected) {
144
+ const node = nodes.get(nodeId);
145
+ if (!node) {
146
+ return "none";
147
+ }
148
+ if (node.children.length === 0) {
149
+ return selected.has(nodeId) ? "all" : "none";
150
+ }
151
+ let all = selected.has(nodeId);
152
+ let any = selected.has(nodeId);
153
+ for (const childId of node.children) {
154
+ const child = selectionState(childId, nodes, selected);
155
+ if (child !== "all") {
156
+ all = false;
151
157
  }
158
+ if (child !== "none") {
159
+ any = true;
160
+ }
161
+ }
162
+ if (all) {
163
+ return "all";
164
+ }
165
+ if (any) {
166
+ return "partial";
152
167
  }
153
- return canonical;
168
+ return "none";
154
169
  }
155
- function render(title, rows, focusIndex, tree, expanded, selected) {
170
+ function render(title, rows, focusIndex, nodes, expanded, selected) {
156
171
  readline.cursorTo(process.stdout, 0, 0);
157
172
  readline.clearScreenDown(process.stdout);
158
- const lines = [];
159
- lines.push(title);
160
- lines.push("←/→ 접기/펼치기, ↑/↓ 이동, Space 선택(하위 포함), Enter 확정");
161
- lines.push("");
173
+ const lines = [
174
+ title,
175
+ "←/→ 접기/펼치기, ↑/↓ 이동, Space 선택(하위 포함), Enter 확정",
176
+ "",
177
+ ];
162
178
  for (let i = 0; i < rows.length; i += 1) {
163
179
  const row = rows[i];
164
180
  if (!row) {
165
181
  continue;
166
182
  }
167
- const node = tree.get(row.id);
183
+ const node = nodes.get(row.id);
168
184
  if (!node) {
169
185
  continue;
170
186
  }
171
- const state = selectionState(node.id, tree, selected);
172
- const marker = state === "all" ? "[x]" : state === "partial" ? "[~]" : "[ ]";
173
- const hasChildren = node.children.length > 0;
174
- const branch = hasChildren ? (expanded.has(node.id) ? "▾" : "▸") : "·";
187
+ const state = selectionState(node.id, nodes, selected);
188
+ const marker = state === "all" ? "" : state === "partial" ? "" : "";
189
+ const branch = node.children.length > 0 ? (expanded.has(node.id) ? "▾" : "▸") : "·";
175
190
  const focus = i === focusIndex ? "❯" : " ";
176
191
  const indent = " ".repeat(row.depth);
177
- lines.push(`${focus} ${indent}${branch} ${marker} ${nodeLabel(node)}`);
192
+ const detail = node.kind === "json"
193
+ ? nodeSummary(node.value)
194
+ : node.sourceLabel ?? "";
195
+ lines.push(`${focus}${indent}${branch} ${marker} ${node.label}${detail ? ` ${detail}` : ""}`);
178
196
  }
179
197
  process.stdout.write(`${lines.join("\n")}\n`);
180
198
  }
181
- export async function promptTreeJsonPathSelection(sourceFilePath, format, title) {
182
- const rootValue = await readStructuredFile(sourceFilePath, format);
183
- const tree = buildTree(sourceFilePath, rootValue);
184
- const root = [...tree.values()].find((node) => node.parentId === undefined);
185
- if (!root) {
186
- return [];
199
+ function collectSelection(nodes, selected) {
200
+ const selectedTargetIds = new Set();
201
+ const jsonPathSelectionsByTarget = {};
202
+ const orderedSelected = [...selected];
203
+ for (const nodeId of orderedSelected) {
204
+ const node = nodes.get(nodeId);
205
+ if (!node || node.targetId === "__root__") {
206
+ continue;
207
+ }
208
+ if (node.kind === "target") {
209
+ selectedTargetIds.add(node.targetId);
210
+ delete jsonPathSelectionsByTarget[node.targetId];
211
+ continue;
212
+ }
213
+ if (!selectedTargetIds.has(node.targetId) && node.jsonPath) {
214
+ const arr = jsonPathSelectionsByTarget[node.targetId] ?? [];
215
+ if (!arr.includes(node.jsonPath)) {
216
+ arr.push(node.jsonPath);
217
+ }
218
+ jsonPathSelectionsByTarget[node.targetId] = arr;
219
+ selectedTargetIds.add(node.targetId);
220
+ }
187
221
  }
222
+ for (const [targetId, paths] of Object.entries(jsonPathSelectionsByTarget)) {
223
+ jsonPathSelectionsByTarget[targetId] = paths.sort();
224
+ }
225
+ return {
226
+ selectedTargetIds: [...selectedTargetIds].sort(),
227
+ jsonPathSelectionsByTarget,
228
+ };
229
+ }
230
+ export async function promptCombinedTargetAndJsonTreeSelection(title, inputs) {
188
231
  if (!process.stdin.isTTY || !process.stdout.isTTY) {
189
- return [];
232
+ return {
233
+ selectedTargetIds: inputs.map((item) => item.targetId),
234
+ jsonPathSelectionsByTarget: {},
235
+ };
190
236
  }
191
- const expanded = new Set([root.id]);
192
- const selected = new Set();
193
- let rows = visibleRows(root.id, tree, expanded);
237
+ const { nodes, rootId } = buildTree(inputs);
238
+ const expanded = new Set([rootId]);
239
+ let rows = visibleRows(rootId, nodes, expanded).filter((row) => row.id !== rootId);
194
240
  let focusIndex = 0;
241
+ const selected = new Set();
195
242
  return await new Promise((resolve, reject) => {
196
243
  const input = process.stdin;
197
244
  const output = process.stdout;
@@ -204,23 +251,14 @@ export async function promptTreeJsonPathSelection(sourceFilePath, format, title)
204
251
  output.write("\x1B[?25h");
205
252
  output.write("\n");
206
253
  };
207
- const finish = () => {
208
- cleanup();
209
- const canonicalNodeIds = canonicalizeSelectedNodeIds(tree, selected);
210
- const paths = canonicalNodeIds
211
- .map((nodeId) => tree.get(nodeId)?.jsonPath)
212
- .filter((value) => typeof value === "string")
213
- .sort();
214
- resolve(paths);
215
- };
216
254
  const onKeypress = (_str, key) => {
217
255
  if (key.ctrl && key.name === "c") {
218
256
  cleanup();
219
257
  reject(new Error("사용자가 트리 선택을 중단했습니다."));
220
258
  return;
221
259
  }
222
- const currentRow = rows[focusIndex];
223
- const currentNode = currentRow ? tree.get(currentRow.id) : undefined;
260
+ const row = rows[focusIndex];
261
+ const currentNode = row ? nodes.get(row.id) : undefined;
224
262
  if (key.name === "up") {
225
263
  focusIndex = Math.max(0, focusIndex - 1);
226
264
  }
@@ -228,62 +266,57 @@ export async function promptTreeJsonPathSelection(sourceFilePath, format, title)
228
266
  focusIndex = Math.min(rows.length - 1, focusIndex + 1);
229
267
  }
230
268
  else if (key.name === "right") {
231
- if (!currentNode) {
232
- return;
233
- }
234
- if (currentNode.children.length === 0) {
235
- return;
236
- }
237
- if (!expanded.has(currentNode.id)) {
238
- expanded.add(currentNode.id);
239
- rows = visibleRows(root.id, tree, expanded);
240
- }
241
- else {
242
- focusIndex = Math.min(rows.length - 1, focusIndex + 1);
269
+ if (currentNode && currentNode.children.length > 0) {
270
+ if (!expanded.has(currentNode.id)) {
271
+ expanded.add(currentNode.id);
272
+ rows = visibleRows(rootId, nodes, expanded).filter((item) => item.id !== rootId);
273
+ }
274
+ else {
275
+ focusIndex = Math.min(rows.length - 1, focusIndex + 1);
276
+ }
243
277
  }
244
278
  }
245
279
  else if (key.name === "left") {
246
- if (!currentNode) {
247
- return;
248
- }
249
- if (expanded.has(currentNode.id) && currentNode.children.length > 0) {
250
- expanded.delete(currentNode.id);
251
- rows = visibleRows(root.id, tree, expanded);
252
- focusIndex = Math.min(focusIndex, rows.length - 1);
253
- }
254
- else if (currentNode.parentId) {
255
- const parentIndex = rows.findIndex((row) => row.id === currentNode.parentId);
256
- if (parentIndex >= 0) {
257
- focusIndex = parentIndex;
280
+ if (currentNode) {
281
+ if (expanded.has(currentNode.id) && currentNode.children.length > 0) {
282
+ expanded.delete(currentNode.id);
283
+ rows = visibleRows(rootId, nodes, expanded).filter((item) => item.id !== rootId);
284
+ focusIndex = Math.min(focusIndex, rows.length - 1);
285
+ }
286
+ else if (currentNode.parentId) {
287
+ const parentIndex = rows.findIndex((item) => item.id === currentNode.parentId);
288
+ if (parentIndex >= 0) {
289
+ focusIndex = parentIndex;
290
+ }
258
291
  }
259
292
  }
260
293
  }
261
294
  else if (key.name === "space") {
262
- if (!currentNode) {
263
- return;
264
- }
265
- const descendants = gatherDescendants(currentNode.id, tree);
266
- const allSelected = descendants.every((nodeId) => selected.has(nodeId));
267
- if (allSelected) {
268
- for (const nodeId of descendants) {
269
- selected.delete(nodeId);
295
+ if (currentNode) {
296
+ const desc = descendants(currentNode.id, nodes);
297
+ const allSelected = desc.every((nodeId) => selected.has(nodeId));
298
+ if (allSelected) {
299
+ for (const nodeId of desc) {
300
+ selected.delete(nodeId);
301
+ }
270
302
  }
271
- }
272
- else {
273
- for (const nodeId of descendants) {
274
- selected.add(nodeId);
303
+ else {
304
+ for (const nodeId of desc) {
305
+ selected.add(nodeId);
306
+ }
275
307
  }
276
308
  }
277
309
  }
278
- else if (key.name === "return") {
279
- finish();
310
+ else if (key.name === "return" || key.name === "enter") {
311
+ cleanup();
312
+ resolve(collectSelection(nodes, selected));
280
313
  return;
281
314
  }
282
- rows = visibleRows(root.id, tree, expanded);
315
+ rows = visibleRows(rootId, nodes, expanded).filter((item) => item.id !== rootId);
283
316
  focusIndex = Math.min(focusIndex, rows.length - 1);
284
- render(title, rows, focusIndex, tree, expanded, selected);
317
+ render(title, rows, focusIndex, nodes, expanded, selected);
285
318
  };
286
- render(title, rows, focusIndex, tree, expanded, selected);
319
+ render(title, rows, focusIndex, nodes, expanded, selected);
287
320
  input.on("keypress", onKeypress);
288
321
  });
289
322
  }
@@ -1 +1 @@
1
- {"version":3,"file":"structured-tree.js","sourceRoot":"","sources":["../../src/ui/structured-tree.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"structured-tree.js","sourceRoot":"","sources":["../../src/ui/structured-tree.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,QAAQ,MAAM,eAAe,CAAC;AA4BrC,SAAS,WAAW,CAAC,KAAc;IACjC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,SAAS,KAAK,CAAC,MAAM,GAAG,CAAC;IAClC,CAAC;IACD,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvC,OAAO,UAAU,MAAM,CAAC,IAAI,CAAC,KAAgC,CAAC,CAAC,MAAM,GAAG,CAAC;IAC3E,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACnC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,OAAO,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7D,CAAC;AAED,SAAS,UAAU,CAAC,QAAgC;IAClD,IAAI,MAAM,GAAG,GAAG,CAAC;IACjB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,MAAM,IAAI,IAAI,OAAO,GAAG,CAAC;YACzB,SAAS;QACX,CAAC;QAED,IAAI,0BAA0B,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7C,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;YACxB,SAAS;QACX,CAAC;QAED,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACpE,MAAM,IAAI,KAAK,OAAO,IAAI,CAAC;IAC7B,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,YAAY,CAAC,KAAc;IAClC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACnE,CAAC;IAED,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvC,OAAO,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACvG,CAAC;IAED,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,SAAS,CAAC,MAAiC;IAClD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC1C,IAAI,GAAG,GAAG,CAAC,CAAC;IAEZ,MAAM,UAAU,GAAG,CAAC,OAA0C,EAAU,EAAE;QACxE,MAAM,EAAE,GAAG,IAAI,GAAG,EAAE,CAAC;QACrB,GAAG,IAAI,CAAC,CAAC;QACT,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;QAEhD,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACrB,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAC3C,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC;QAED,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,UAAU,CAAC;QACxB,QAAQ,EAAE,SAAS;QACnB,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,UAAU;QACpB,KAAK,EAAE,WAAW;QAClB,WAAW,EAAE,SAAS;QACtB,QAAQ,EAAE,SAAS;QACnB,KAAK,EAAE,IAAI;KACZ,CAAC,CAAC;IAEH,MAAM,eAAe,GAAG,CACtB,QAAgB,EAChB,QAAgB,EAChB,KAAc,EACd,QAAgC,EAC1B,EAAE;QACR,KAAK,MAAM,KAAK,IAAI,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;YACxC,MAAM,YAAY,GAAG,CAAC,GAAG,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;YAC9C,MAAM,QAAQ,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;YAC1C,MAAM,OAAO,GAAG,UAAU,CAAC;gBACzB,QAAQ;gBACR,IAAI,EAAE,MAAM;gBACZ,QAAQ;gBACR,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;gBACxB,WAAW,EAAE,SAAS;gBACtB,QAAQ,EAAE,QAAQ;gBAClB,KAAK,EAAE,KAAK,CAAC,KAAK;aACnB,CAAC,CAAC;YACH,eAAe,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QAChE,CAAC;IACH,CAAC,CAAC;IAEF,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,YAAY,GAAG,UAAU,CAAC;YAC9B,QAAQ,EAAE,MAAM;YAChB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,WAAW,EAAE,UAAU,KAAK,CAAC,UAAU,EAAE;YACzC,QAAQ,EAAE,SAAS;YACnB,KAAK,EAAE,KAAK,CAAC,WAAW;SACzB,CAAC,CAAC;QAEH,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YAClC,MAAM,UAAU,GAAG,UAAU,CAAC;gBAC5B,QAAQ,EAAE,YAAY;gBACtB,IAAI,EAAE,MAAM;gBACZ,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC;gBACtC,WAAW,EAAE,SAAS;gBACtB,QAAQ,EAAE,GAAG;gBACb,KAAK,EAAE,KAAK,CAAC,SAAS;aACvB,CAAC,CAAC;YACH,eAAe,CAAC,UAAU,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AAC3B,CAAC;AAED,SAAS,WAAW,CAClB,MAAc,EACd,KAA4B,EAC5B,QAAqB;IAErB,MAAM,IAAI,GAAyC,EAAE,CAAC;IAEtD,MAAM,IAAI,GAAG,CAAC,MAAc,EAAE,KAAa,EAAQ,EAAE;QACnD,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QACjC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1B,OAAO;QACT,CAAC;QAED,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC/B,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO;QACT,CAAC;QAED,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,IAAI,CAAC,OAAO,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC,CAAC;IAEF,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAChB,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,WAAW,CAAC,MAAc,EAAE,KAA4B;IAC/D,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC;IAEvB,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,SAAS;QACX,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAElB,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAChC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,SAAS;QACX,CAAC;QAED,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,cAAc,CAAC,MAAc,EAAE,KAA4B,EAAE,QAAqB;IACzF,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC/B,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;IAC/C,CAAC;IAED,IAAI,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC/B,IAAI,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAE/B,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QACpC,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;QACvD,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;YACpB,GAAG,GAAG,KAAK,CAAC;QACd,CAAC;QACD,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;YACrB,GAAG,GAAG,IAAI,CAAC;QACb,CAAC;IACH,CAAC;IAED,IAAI,GAAG,EAAE,CAAC;QACR,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,GAAG,EAAE,CAAC;QACR,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,MAAM,CACb,KAAa,EACb,IAA0C,EAC1C,UAAkB,EAClB,KAA4B,EAC5B,QAAqB,EACrB,QAAqB;IAErB,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACxC,QAAQ,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAEzC,MAAM,KAAK,GAAa;QACtB,KAAK;QACL,+CAA+C;QAC/C,EAAE;KACH,CAAC;IAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,SAAS;QACX,CAAC;QAED,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC/B,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,SAAS;QACX,CAAC;QAED,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;QACvD,MAAM,MAAM,GAAG,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QACvE,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QACpF,MAAM,KAAK,GAAG,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAEtC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,KAAK,MAAM;YACjC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;YACzB,CAAC,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC;QAE3B,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,IAAI,MAAM,IAAI,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAChG,CAAC;IAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChD,CAAC;AAED,SAAS,gBAAgB,CAAC,KAA4B,EAAE,QAAqB;IAC3E,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAU,CAAC;IAC5C,MAAM,0BAA0B,GAA6B,EAAE,CAAC;IAEhE,MAAM,eAAe,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC;IAEtC,KAAK,MAAM,MAAM,IAAI,eAAe,EAAE,CAAC;QACrC,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC/B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;YAC1C,SAAS;QACX,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC3B,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACrC,OAAO,0BAA0B,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACjD,SAAS;QACX,CAAC;QAED,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC3D,MAAM,GAAG,GAAG,0BAA0B,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YAC5D,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACjC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC1B,CAAC;YACD,0BAA0B,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC;YAChD,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAED,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,0BAA0B,CAAC,EAAE,CAAC;QAC3E,0BAA0B,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IACtD,CAAC;IAED,OAAO;QACL,iBAAiB,EAAE,CAAC,GAAG,iBAAiB,CAAC,CAAC,IAAI,EAAE;QAChD,0BAA0B;KAC3B,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,wCAAwC,CAC5D,KAAa,EACb,MAAiC;IAEjC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAClD,OAAO;YACL,iBAAiB,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC;YACtD,0BAA0B,EAAE,EAAE;SAC/B,CAAC;IACJ,CAAC;IAED,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3C,IAAI,IAAI,GAAG,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC;IACnF,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IAEnC,OAAO,MAAM,IAAI,OAAO,CAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAClE,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC5B,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAE9B,QAAQ,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;QACnC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACvB,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAE1B,MAAM,OAAO,GAAG,GAAS,EAAE;YACzB,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;YAClC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YACxB,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAC1B,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC,CAAC;QAEF,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,GAAsC,EAAQ,EAAE;YAChF,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;gBACjC,OAAO,EAAE,CAAC;gBACV,MAAM,CAAC,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC;gBACzC,OAAO;YACT,CAAC;YAED,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;YAC7B,MAAM,WAAW,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAExD,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;gBACtB,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,GAAG,CAAC,CAAC,CAAC;YAC3C,CAAC;iBAAM,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC/B,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,UAAU,GAAG,CAAC,CAAC,CAAC;YACzD,CAAC;iBAAM,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBAChC,IAAI,WAAW,IAAI,WAAW,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACnD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC;wBAClC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;wBAC7B,IAAI,GAAG,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC;oBACnF,CAAC;yBAAM,CAAC;wBACN,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,UAAU,GAAG,CAAC,CAAC,CAAC;oBACzD,CAAC;gBACH,CAAC;YACH,CAAC;iBAAM,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC/B,IAAI,WAAW,EAAE,CAAC;oBAChB,IAAI,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACpE,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;wBAChC,IAAI,GAAG,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC;wBACjF,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;oBACrD,CAAC;yBAAM,IAAI,WAAW,CAAC,QAAQ,EAAE,CAAC;wBAChC,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,WAAW,CAAC,QAAQ,CAAC,CAAC;wBAC/E,IAAI,WAAW,IAAI,CAAC,EAAE,CAAC;4BACrB,UAAU,GAAG,WAAW,CAAC;wBAC3B,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;iBAAM,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBAChC,IAAI,WAAW,EAAE,CAAC;oBAChB,MAAM,IAAI,GAAG,WAAW,CAAC,WAAW,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;oBAChD,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;oBACjE,IAAI,WAAW,EAAE,CAAC;wBAChB,KAAK,MAAM,MAAM,IAAI,IAAI,EAAE,CAAC;4BAC1B,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;wBAC1B,CAAC;oBACH,CAAC;yBAAM,CAAC;wBACN,KAAK,MAAM,MAAM,IAAI,IAAI,EAAE,CAAC;4BAC1B,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;wBACvB,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;iBAAM,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBACzD,OAAO,EAAE,CAAC;gBACV,OAAO,CAAC,gBAAgB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;gBAC3C,OAAO;YACT,CAAC;YAED,IAAI,GAAG,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC;YACjF,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACnD,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC7D,CAAC,CAAC;QAEF,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC3D,KAAK,CAAC,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;AACL,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agentsx",
3
- "version": "0.1.3",
3
+ "version": "0.1.4",
4
4
  "description": "Cross-machine agent config sync CLI",
5
5
  "type": "module",
6
6
  "files": [