@crypto512/jicon-mcp 1.3.0 → 2.0.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 (160) hide show
  1. package/README.md +68 -85
  2. package/TOOL_LIST.md +704 -87
  3. package/dist/config/constants.d.ts +18 -7
  4. package/dist/config/constants.d.ts.map +1 -1
  5. package/dist/config/constants.js +21 -8
  6. package/dist/config/constants.js.map +1 -1
  7. package/dist/config/loader.d.ts +11 -11
  8. package/dist/config/loader.d.ts.map +1 -1
  9. package/dist/config/loader.js +53 -93
  10. package/dist/config/loader.js.map +1 -1
  11. package/dist/config/types.d.ts +3 -6
  12. package/dist/config/types.d.ts.map +1 -1
  13. package/dist/config/types.js +2 -4
  14. package/dist/config/types.js.map +1 -1
  15. package/dist/confluence/formatters.js +1 -1
  16. package/dist/confluence/formatters.js.map +1 -1
  17. package/dist/confluence/tools.d.ts +4 -0
  18. package/dist/confluence/tools.d.ts.map +1 -1
  19. package/dist/confluence/tools.js +180 -125
  20. package/dist/confluence/tools.js.map +1 -1
  21. package/dist/index.js +17 -26
  22. package/dist/index.js.map +1 -1
  23. package/dist/jira/formatters.d.ts +1 -0
  24. package/dist/jira/formatters.d.ts.map +1 -1
  25. package/dist/jira/formatters.js +13 -12
  26. package/dist/jira/formatters.js.map +1 -1
  27. package/dist/jira/tools.d.ts +4 -0
  28. package/dist/jira/tools.d.ts.map +1 -1
  29. package/dist/jira/tools.js +189 -50
  30. package/dist/jira/tools.js.map +1 -1
  31. package/dist/permissions/tool-registry.d.ts +2 -2
  32. package/dist/permissions/tool-registry.d.ts.map +1 -1
  33. package/dist/permissions/tool-registry.js +4 -2
  34. package/dist/permissions/tool-registry.js.map +1 -1
  35. package/dist/permissions/write-home-validator.d.ts.map +1 -1
  36. package/dist/permissions/write-home-validator.js +13 -3
  37. package/dist/permissions/write-home-validator.js.map +1 -1
  38. package/dist/tempo/defaults.d.ts +17 -0
  39. package/dist/tempo/defaults.d.ts.map +1 -0
  40. package/dist/tempo/defaults.js +26 -0
  41. package/dist/tempo/defaults.js.map +1 -0
  42. package/dist/tempo/tools.d.ts +5 -0
  43. package/dist/tempo/tools.d.ts.map +1 -1
  44. package/dist/tempo/tools.js +108 -34
  45. package/dist/tempo/tools.js.map +1 -1
  46. package/dist/utils/buffer-pipeline/index.d.ts +30 -0
  47. package/dist/utils/buffer-pipeline/index.d.ts.map +1 -0
  48. package/dist/utils/buffer-pipeline/index.js +317 -0
  49. package/dist/utils/buffer-pipeline/index.js.map +1 -0
  50. package/dist/utils/buffer-pipeline/output/csv.d.ts +20 -0
  51. package/dist/utils/buffer-pipeline/output/csv.d.ts.map +1 -0
  52. package/dist/utils/buffer-pipeline/output/csv.js +117 -0
  53. package/dist/utils/buffer-pipeline/output/csv.js.map +1 -0
  54. package/dist/utils/buffer-pipeline/output/json.d.ts +16 -0
  55. package/dist/utils/buffer-pipeline/output/json.d.ts.map +1 -0
  56. package/dist/utils/buffer-pipeline/output/json.js +48 -0
  57. package/dist/utils/buffer-pipeline/output/json.js.map +1 -0
  58. package/dist/utils/buffer-pipeline/output/markdown.d.ts +15 -0
  59. package/dist/utils/buffer-pipeline/output/markdown.d.ts.map +1 -0
  60. package/dist/utils/buffer-pipeline/output/markdown.js +105 -0
  61. package/dist/utils/buffer-pipeline/output/markdown.js.map +1 -0
  62. package/dist/utils/buffer-pipeline/output/xhtml-list.d.ts +16 -0
  63. package/dist/utils/buffer-pipeline/output/xhtml-list.d.ts.map +1 -0
  64. package/dist/utils/buffer-pipeline/output/xhtml-list.js +81 -0
  65. package/dist/utils/buffer-pipeline/output/xhtml-list.js.map +1 -0
  66. package/dist/utils/buffer-pipeline/output/xhtml-table.d.ts +15 -0
  67. package/dist/utils/buffer-pipeline/output/xhtml-table.d.ts.map +1 -0
  68. package/dist/utils/buffer-pipeline/output/xhtml-table.js +176 -0
  69. package/dist/utils/buffer-pipeline/output/xhtml-table.js.map +1 -0
  70. package/dist/utils/buffer-pipeline/schema.d.ts +1878 -0
  71. package/dist/utils/buffer-pipeline/schema.d.ts.map +1 -0
  72. package/dist/utils/buffer-pipeline/schema.js +168 -0
  73. package/dist/utils/buffer-pipeline/schema.js.map +1 -0
  74. package/dist/utils/buffer-pipeline/stages/filter.d.ts +32 -0
  75. package/dist/utils/buffer-pipeline/stages/filter.d.ts.map +1 -0
  76. package/dist/utils/buffer-pipeline/stages/filter.js +208 -0
  77. package/dist/utils/buffer-pipeline/stages/filter.js.map +1 -0
  78. package/dist/utils/buffer-pipeline/stages/format.d.ts +45 -0
  79. package/dist/utils/buffer-pipeline/stages/format.d.ts.map +1 -0
  80. package/dist/utils/buffer-pipeline/stages/format.js +160 -0
  81. package/dist/utils/buffer-pipeline/stages/format.js.map +1 -0
  82. package/dist/utils/buffer-pipeline/stages/group-by.d.ts +25 -0
  83. package/dist/utils/buffer-pipeline/stages/group-by.d.ts.map +1 -0
  84. package/dist/utils/buffer-pipeline/stages/group-by.js +190 -0
  85. package/dist/utils/buffer-pipeline/stages/group-by.js.map +1 -0
  86. package/dist/utils/buffer-pipeline/stages/select.d.ts +54 -0
  87. package/dist/utils/buffer-pipeline/stages/select.d.ts.map +1 -0
  88. package/dist/utils/buffer-pipeline/stages/select.js +228 -0
  89. package/dist/utils/buffer-pipeline/stages/select.js.map +1 -0
  90. package/dist/utils/buffer-pipeline/stages/sort.d.ts +20 -0
  91. package/dist/utils/buffer-pipeline/stages/sort.d.ts.map +1 -0
  92. package/dist/utils/buffer-pipeline/stages/sort.js +96 -0
  93. package/dist/utils/buffer-pipeline/stages/sort.js.map +1 -0
  94. package/dist/utils/buffer-pipeline/types.d.ts +277 -0
  95. package/dist/utils/buffer-pipeline/types.d.ts.map +1 -0
  96. package/dist/utils/buffer-pipeline/types.js +8 -0
  97. package/dist/utils/buffer-pipeline/types.js.map +1 -0
  98. package/dist/utils/buffer-tools.d.ts +749 -19
  99. package/dist/utils/buffer-tools.d.ts.map +1 -1
  100. package/dist/utils/buffer-tools.js +738 -491
  101. package/dist/utils/buffer-tools.js.map +1 -1
  102. package/dist/utils/content-buffer.d.ts +55 -4
  103. package/dist/utils/content-buffer.d.ts.map +1 -1
  104. package/dist/utils/content-buffer.js +107 -9
  105. package/dist/utils/content-buffer.js.map +1 -1
  106. package/dist/utils/jicon-help.d.ts +1 -1
  107. package/dist/utils/jicon-help.d.ts.map +1 -1
  108. package/dist/utils/jicon-help.js +253 -28
  109. package/dist/utils/jicon-help.js.map +1 -1
  110. package/dist/utils/json-structure.d.ts +121 -0
  111. package/dist/utils/json-structure.d.ts.map +1 -0
  112. package/dist/utils/json-structure.js +637 -0
  113. package/dist/utils/json-structure.js.map +1 -0
  114. package/dist/utils/plantuml/include-expander.d.ts +31 -30
  115. package/dist/utils/plantuml/include-expander.d.ts.map +1 -1
  116. package/dist/utils/plantuml/include-expander.js +167 -133
  117. package/dist/utils/plantuml/include-expander.js.map +1 -1
  118. package/dist/utils/plantuml/index.d.ts +3 -3
  119. package/dist/utils/plantuml/index.d.ts.map +1 -1
  120. package/dist/utils/plantuml/index.js +4 -4
  121. package/dist/utils/plantuml/index.js.map +1 -1
  122. package/dist/utils/plantuml/service.d.ts +13 -24
  123. package/dist/utils/plantuml/service.d.ts.map +1 -1
  124. package/dist/utils/plantuml/service.js +49 -99
  125. package/dist/utils/plantuml/service.js.map +1 -1
  126. package/dist/utils/plantuml/tools.d.ts.map +1 -1
  127. package/dist/utils/plantuml/tools.js +33 -72
  128. package/dist/utils/plantuml/tools.js.map +1 -1
  129. package/dist/utils/plantuml/types.d.ts +1 -35
  130. package/dist/utils/plantuml/types.d.ts.map +1 -1
  131. package/dist/utils/plantuml/types.js +1 -11
  132. package/dist/utils/plantuml/types.js.map +1 -1
  133. package/dist/utils/plantuml/validation-helper.d.ts +1 -1
  134. package/dist/utils/plantuml/validation-helper.js +12 -12
  135. package/dist/utils/plantuml/validation-helper.js.map +1 -1
  136. package/dist/utils/response-formatter.d.ts +61 -6
  137. package/dist/utils/response-formatter.d.ts.map +1 -1
  138. package/dist/utils/response-formatter.js +174 -91
  139. package/dist/utils/response-formatter.js.map +1 -1
  140. package/dist/utils/url-tools.d.ts.map +1 -1
  141. package/dist/utils/url-tools.js +22 -0
  142. package/dist/utils/url-tools.js.map +1 -1
  143. package/dist/utils/xhtml/error-locator.js +2 -2
  144. package/dist/utils/xhtml/error-locator.js.map +1 -1
  145. package/dist/utils/xhtml/index.d.ts +1 -1
  146. package/dist/utils/xhtml/index.d.ts.map +1 -1
  147. package/dist/utils/xhtml/index.js +1 -1
  148. package/dist/utils/xhtml/index.js.map +1 -1
  149. package/dist/utils/xhtml/parser.d.ts +34 -5
  150. package/dist/utils/xhtml/parser.d.ts.map +1 -1
  151. package/dist/utils/xhtml/parser.js +66 -11
  152. package/dist/utils/xhtml/parser.js.map +1 -1
  153. package/dist/utils/xhtml/plantuml.d.ts.map +1 -1
  154. package/dist/utils/xhtml/plantuml.js +5 -3
  155. package/dist/utils/xhtml/plantuml.js.map +1 -1
  156. package/dist/utils/xhtml/serializer.d.ts.map +1 -1
  157. package/dist/utils/xhtml/serializer.js +12 -15
  158. package/dist/utils/xhtml/serializer.js.map +1 -1
  159. package/package.json +12 -4
  160. package/crypto512-jicon-mcp-1.3.0.tgz +0 -0
@@ -0,0 +1,637 @@
1
+ /**
2
+ * JSON Structure Operations
3
+ *
4
+ * Provides unified structured access for JSON data (arrays and objects).
5
+ * Similar to XHTML buffer operations but for JSON data.
6
+ *
7
+ * Key design for ARRAYS:
8
+ * - Items get stable numeric IDs (stored in __jicon_id field)
9
+ * - IDs persist through insertions/deletions
10
+ * - Enables ID-based operations: append, insert, replace, remove
11
+ *
12
+ * Key design for OBJECTS:
13
+ * - Key-based access to top-level properties
14
+ * - No IDs needed - keys are the natural identifiers
15
+ */
16
+ const JICON_ID_FIELD = "__jicon_id";
17
+ /**
18
+ * Parse a JSON string and validate it is an array.
19
+ */
20
+ function parseJsonArray(content) {
21
+ try {
22
+ const parsed = JSON.parse(content);
23
+ if (!Array.isArray(parsed)) {
24
+ return { data: null, error: "Buffer content is not an array" };
25
+ }
26
+ return { data: parsed };
27
+ }
28
+ catch (e) {
29
+ return { data: null, error: `Failed to parse buffer: ${e.message}` };
30
+ }
31
+ }
32
+ /**
33
+ * Get the type of a JSON value
34
+ */
35
+ function getJsonType(value) {
36
+ if (value === null)
37
+ return "null";
38
+ if (Array.isArray(value))
39
+ return "array";
40
+ if (typeof value === "object")
41
+ return "object";
42
+ if (typeof value === "string")
43
+ return "string";
44
+ if (typeof value === "number")
45
+ return "number";
46
+ if (typeof value === "boolean")
47
+ return "boolean";
48
+ return "null";
49
+ }
50
+ /**
51
+ * Get a preview string for a JSON value
52
+ */
53
+ function getPreview(value, maxLength = 50) {
54
+ if (value === null)
55
+ return "null";
56
+ if (typeof value === "string") {
57
+ return value.length > maxLength ? value.substring(0, maxLength) + "..." : value;
58
+ }
59
+ if (typeof value === "number" || typeof value === "boolean") {
60
+ return String(value);
61
+ }
62
+ if (Array.isArray(value)) {
63
+ return `[${value.length} items]`;
64
+ }
65
+ if (typeof value === "object" && value !== null) {
66
+ const keys = Object.keys(value).filter(k => k !== JICON_ID_FIELD);
67
+ if (keys.length === 0)
68
+ return "{}";
69
+ // Try to find a meaningful preview field
70
+ const previewFields = ["key", "name", "title", "id", "summary"];
71
+ for (const field of previewFields) {
72
+ if (field in value && typeof value[field] === "string") {
73
+ const fieldValue = value[field];
74
+ return fieldValue.length > maxLength ? fieldValue.substring(0, maxLength) + "..." : fieldValue;
75
+ }
76
+ }
77
+ return `{${keys.slice(0, 3).join(", ")}${keys.length > 3 ? ", ..." : ""}}`;
78
+ }
79
+ return undefined;
80
+ }
81
+ /**
82
+ * Extract item info from a value (excluding the internal ID field from keys)
83
+ */
84
+ function extractItemInfo(id, value) {
85
+ const type = getJsonType(value);
86
+ const info = { id, type };
87
+ info.preview = getPreview(value);
88
+ if (type === "object" && value !== null) {
89
+ const keys = Object.keys(value).filter(k => k !== JICON_ID_FIELD);
90
+ if (keys.length > 0) {
91
+ info.keys = keys.slice(0, 10); // Limit to first 10 keys
92
+ }
93
+ }
94
+ if (type === "array" && Array.isArray(value)) {
95
+ info.length = value.length;
96
+ }
97
+ return info;
98
+ }
99
+ /**
100
+ * Parse JSON string and build structure with IDs for array items
101
+ * If the JSON is an array, each item gets an ID.
102
+ * If it's an object with array fields, those arrays can be targeted by path.
103
+ */
104
+ export function parseJsonStructure(jsonString) {
105
+ let data;
106
+ try {
107
+ data = JSON.parse(jsonString);
108
+ }
109
+ catch (e) {
110
+ return {
111
+ data: null,
112
+ structure: { rootType: "primitive", nextId: 1 },
113
+ error: `Invalid JSON: ${e.message}`,
114
+ };
115
+ }
116
+ if (Array.isArray(data)) {
117
+ // Root is an array - assign IDs to each item
118
+ let nextId = 1;
119
+ const items = [];
120
+ const dataWithIds = [];
121
+ for (const item of data) {
122
+ const id = nextId++;
123
+ items.push(extractItemInfo(id, item));
124
+ // Add ID to objects, wrap primitives
125
+ if (item !== null && typeof item === "object" && !Array.isArray(item)) {
126
+ dataWithIds.push({ ...item, [JICON_ID_FIELD]: id });
127
+ }
128
+ else {
129
+ // For primitives/arrays, wrap in an object
130
+ dataWithIds.push({ __value: item, [JICON_ID_FIELD]: id });
131
+ }
132
+ }
133
+ return {
134
+ data: dataWithIds,
135
+ structure: {
136
+ rootType: "array",
137
+ itemCount: items.length,
138
+ items,
139
+ nextId,
140
+ },
141
+ };
142
+ }
143
+ else if (data !== null && typeof data === "object") {
144
+ // Root is an object
145
+ const keys = Object.keys(data);
146
+ return {
147
+ data,
148
+ structure: {
149
+ rootType: "object",
150
+ keys,
151
+ nextId: 1,
152
+ },
153
+ };
154
+ }
155
+ else {
156
+ // Root is a primitive
157
+ return {
158
+ data,
159
+ structure: {
160
+ rootType: "primitive",
161
+ nextId: 1,
162
+ },
163
+ };
164
+ }
165
+ }
166
+ /**
167
+ * Create a new JSON buffer with structure tracking.
168
+ * Handles both arrays and objects:
169
+ * - Arrays: items get stable IDs for ID-based access
170
+ * - Objects: keys are extracted for key-based access
171
+ *
172
+ * @param data - Array or object to create structure for
173
+ * @returns content string and structure
174
+ */
175
+ export function createJsonStructure(data) {
176
+ // Handle arrays
177
+ if (Array.isArray(data)) {
178
+ if (data.length === 0) {
179
+ return {
180
+ content: "[]",
181
+ structure: {
182
+ rootType: "array",
183
+ itemCount: 0,
184
+ items: [],
185
+ nextId: 1,
186
+ },
187
+ };
188
+ }
189
+ let nextId = 1;
190
+ const items = [];
191
+ const dataWithIds = [];
192
+ for (const item of data) {
193
+ const id = nextId++;
194
+ items.push(extractItemInfo(id, item));
195
+ if (item !== null && typeof item === "object" && !Array.isArray(item)) {
196
+ dataWithIds.push({ ...item, [JICON_ID_FIELD]: id });
197
+ }
198
+ else {
199
+ dataWithIds.push({ __value: item, [JICON_ID_FIELD]: id });
200
+ }
201
+ }
202
+ return {
203
+ content: JSON.stringify(dataWithIds, null, 2),
204
+ structure: {
205
+ rootType: "array",
206
+ itemCount: items.length,
207
+ items,
208
+ nextId,
209
+ },
210
+ };
211
+ }
212
+ // Handle objects
213
+ if (data !== null && typeof data === "object") {
214
+ const keys = Object.keys(data);
215
+ return {
216
+ content: JSON.stringify(data, null, 2),
217
+ structure: {
218
+ rootType: "object",
219
+ keys,
220
+ nextId: 1,
221
+ },
222
+ };
223
+ }
224
+ // Handle primitives
225
+ return {
226
+ content: JSON.stringify(data),
227
+ structure: {
228
+ rootType: "primitive",
229
+ nextId: 1,
230
+ },
231
+ };
232
+ }
233
+ /**
234
+ * Append an item to a JSON array buffer
235
+ */
236
+ export function appendToJsonArray(currentContent, currentStructure, newItem) {
237
+ if (currentStructure.rootType !== "array") {
238
+ return {
239
+ content: currentContent,
240
+ structure: currentStructure,
241
+ insertedId: -1,
242
+ error: "Buffer is not a JSON array",
243
+ };
244
+ }
245
+ const parsed = parseJsonArray(currentContent);
246
+ if (!parsed.data) {
247
+ return {
248
+ content: currentContent,
249
+ structure: currentStructure,
250
+ insertedId: -1,
251
+ error: parsed.error,
252
+ };
253
+ }
254
+ const data = parsed.data;
255
+ const newId = currentStructure.nextId;
256
+ const newItemInfo = extractItemInfo(newId, newItem);
257
+ // Add item with ID
258
+ let itemWithId;
259
+ if (newItem !== null && typeof newItem === "object" && !Array.isArray(newItem)) {
260
+ itemWithId = { ...newItem, [JICON_ID_FIELD]: newId };
261
+ }
262
+ else {
263
+ itemWithId = { __value: newItem, [JICON_ID_FIELD]: newId };
264
+ }
265
+ data.push(itemWithId);
266
+ const newStructure = {
267
+ rootType: "array",
268
+ itemCount: (currentStructure.itemCount ?? 0) + 1,
269
+ items: [...(currentStructure.items ?? []), newItemInfo],
270
+ nextId: newId + 1,
271
+ };
272
+ return {
273
+ content: JSON.stringify(data, null, 2),
274
+ structure: newStructure,
275
+ insertedId: newId,
276
+ };
277
+ }
278
+ /**
279
+ * Insert an item into a JSON array relative to an existing item
280
+ */
281
+ export function insertIntoJsonArray(currentContent, currentStructure, newItem, targetId, position) {
282
+ if (currentStructure.rootType !== "array") {
283
+ return {
284
+ content: currentContent,
285
+ structure: currentStructure,
286
+ insertedId: -1,
287
+ error: "Buffer is not a JSON array",
288
+ };
289
+ }
290
+ const parsed = parseJsonArray(currentContent);
291
+ if (!parsed.data) {
292
+ return {
293
+ content: currentContent,
294
+ structure: currentStructure,
295
+ insertedId: -1,
296
+ error: parsed.error,
297
+ };
298
+ }
299
+ const data = parsed.data;
300
+ // Find target index
301
+ const targetIndex = data.findIndex(item => item[JICON_ID_FIELD] === targetId);
302
+ if (targetIndex === -1) {
303
+ return {
304
+ content: currentContent,
305
+ structure: currentStructure,
306
+ insertedId: -1,
307
+ error: `Item with ID ${targetId} not found`,
308
+ };
309
+ }
310
+ const newId = currentStructure.nextId;
311
+ const newItemInfo = extractItemInfo(newId, newItem);
312
+ // Add item with ID
313
+ let itemWithId;
314
+ if (newItem !== null && typeof newItem === "object" && !Array.isArray(newItem)) {
315
+ itemWithId = { ...newItem, [JICON_ID_FIELD]: newId };
316
+ }
317
+ else {
318
+ itemWithId = { __value: newItem, [JICON_ID_FIELD]: newId };
319
+ }
320
+ // Insert at position
321
+ const insertIndex = position === "before" ? targetIndex : targetIndex + 1;
322
+ data.splice(insertIndex, 0, itemWithId);
323
+ // Update structure items array
324
+ const currentItems = currentStructure.items ?? [];
325
+ const structureInsertIndex = currentItems.findIndex(i => i.id === targetId);
326
+ const newItems = [...currentItems];
327
+ if (structureInsertIndex !== -1) {
328
+ const actualInsertIndex = position === "before" ? structureInsertIndex : structureInsertIndex + 1;
329
+ newItems.splice(actualInsertIndex, 0, newItemInfo);
330
+ }
331
+ else {
332
+ newItems.push(newItemInfo);
333
+ }
334
+ const newStructure = {
335
+ rootType: "array",
336
+ itemCount: (currentStructure.itemCount ?? 0) + 1,
337
+ items: newItems,
338
+ nextId: newId + 1,
339
+ };
340
+ return {
341
+ content: JSON.stringify(data, null, 2),
342
+ structure: newStructure,
343
+ insertedId: newId,
344
+ };
345
+ }
346
+ /**
347
+ * Replace an item in a JSON array by ID
348
+ */
349
+ export function replaceInJsonArray(currentContent, currentStructure, targetId, newValue) {
350
+ if (currentStructure.rootType !== "array") {
351
+ return {
352
+ content: currentContent,
353
+ structure: currentStructure,
354
+ error: "Buffer is not a JSON array",
355
+ };
356
+ }
357
+ const parsed = parseJsonArray(currentContent);
358
+ if (!parsed.data) {
359
+ return {
360
+ content: currentContent,
361
+ structure: currentStructure,
362
+ error: parsed.error,
363
+ };
364
+ }
365
+ const data = parsed.data;
366
+ // Find target index
367
+ const targetIndex = data.findIndex(item => item[JICON_ID_FIELD] === targetId);
368
+ if (targetIndex === -1) {
369
+ return {
370
+ content: currentContent,
371
+ structure: currentStructure,
372
+ error: `Item with ID ${targetId} not found`,
373
+ };
374
+ }
375
+ // Replace with new value, preserving ID
376
+ let newItemWithId;
377
+ if (newValue !== null && typeof newValue === "object" && !Array.isArray(newValue)) {
378
+ newItemWithId = { ...newValue, [JICON_ID_FIELD]: targetId };
379
+ }
380
+ else {
381
+ newItemWithId = { __value: newValue, [JICON_ID_FIELD]: targetId };
382
+ }
383
+ data[targetIndex] = newItemWithId;
384
+ // Update structure
385
+ const newItemInfo = extractItemInfo(targetId, newValue);
386
+ const newItems = (currentStructure.items ?? []).map(item => item.id === targetId ? newItemInfo : item);
387
+ const newStructure = {
388
+ ...currentStructure,
389
+ items: newItems,
390
+ };
391
+ return {
392
+ content: JSON.stringify(data, null, 2),
393
+ structure: newStructure,
394
+ };
395
+ }
396
+ /**
397
+ * Remove an item from a JSON array by ID
398
+ */
399
+ export function removeFromJsonArray(currentContent, currentStructure, targetId) {
400
+ if (currentStructure.rootType !== "array") {
401
+ return {
402
+ content: currentContent,
403
+ structure: currentStructure,
404
+ error: "Buffer is not a JSON array",
405
+ };
406
+ }
407
+ const parsed = parseJsonArray(currentContent);
408
+ if (!parsed.data) {
409
+ return {
410
+ content: currentContent,
411
+ structure: currentStructure,
412
+ error: parsed.error,
413
+ };
414
+ }
415
+ const data = parsed.data;
416
+ // Find target index
417
+ const targetIndex = data.findIndex(item => item[JICON_ID_FIELD] === targetId);
418
+ if (targetIndex === -1) {
419
+ return {
420
+ content: currentContent,
421
+ structure: currentStructure,
422
+ error: `Item with ID ${targetId} not found`,
423
+ };
424
+ }
425
+ // Remove item
426
+ data.splice(targetIndex, 1);
427
+ // Update structure
428
+ const newItems = (currentStructure.items ?? []).filter(item => item.id !== targetId);
429
+ const newStructure = {
430
+ rootType: "array",
431
+ itemCount: Math.max(0, (currentStructure.itemCount ?? 0) - 1),
432
+ items: newItems,
433
+ nextId: currentStructure.nextId,
434
+ };
435
+ return {
436
+ content: JSON.stringify(data, null, 2),
437
+ structure: newStructure,
438
+ };
439
+ }
440
+ /**
441
+ * Get an item from a JSON array by ID (without the internal ID field)
442
+ */
443
+ export function getItemById(currentContent, currentStructure, targetId) {
444
+ if (currentStructure.rootType !== "array") {
445
+ return {
446
+ item: null,
447
+ error: "Buffer is not a JSON array",
448
+ };
449
+ }
450
+ const parsed = parseJsonArray(currentContent);
451
+ if (!parsed.data) {
452
+ return {
453
+ item: null,
454
+ error: parsed.error,
455
+ };
456
+ }
457
+ const data = parsed.data;
458
+ // Find target
459
+ const target = data.find(item => item[JICON_ID_FIELD] === targetId);
460
+ if (!target) {
461
+ return {
462
+ item: null,
463
+ error: `Item with ID ${targetId} not found`,
464
+ };
465
+ }
466
+ // Remove internal fields and unwrap if needed
467
+ if ("__value" in target) {
468
+ return { item: target.__value };
469
+ }
470
+ const { [JICON_ID_FIELD]: _id, ...cleanItem } = target;
471
+ return { item: cleanItem };
472
+ }
473
+ /**
474
+ * Get all items from a JSON array buffer (without internal ID fields)
475
+ * For export/serialization
476
+ */
477
+ export function getCleanItems(currentContent) {
478
+ let data;
479
+ try {
480
+ data = JSON.parse(currentContent);
481
+ if (!Array.isArray(data)) {
482
+ return {
483
+ items: [],
484
+ error: "Buffer content is not an array",
485
+ };
486
+ }
487
+ }
488
+ catch (e) {
489
+ return {
490
+ items: [],
491
+ error: `Failed to parse buffer: ${e.message}`,
492
+ };
493
+ }
494
+ const cleanItems = data.map(item => {
495
+ if ("__value" in item) {
496
+ return item.__value;
497
+ }
498
+ const { [JICON_ID_FIELD]: _id, ...cleanItem } = item;
499
+ return cleanItem;
500
+ });
501
+ return { items: cleanItems };
502
+ }
503
+ /**
504
+ * Rebuild structure from content (for recovery/validation)
505
+ */
506
+ export function rebuildStructure(currentContent) {
507
+ let data;
508
+ try {
509
+ data = JSON.parse(currentContent);
510
+ }
511
+ catch (e) {
512
+ return {
513
+ structure: { rootType: "primitive", nextId: 1 },
514
+ error: `Invalid JSON: ${e.message}`,
515
+ };
516
+ }
517
+ if (Array.isArray(data)) {
518
+ const items = [];
519
+ let maxId = 0;
520
+ for (const item of data) {
521
+ const itemObj = item;
522
+ const id = itemObj[JICON_ID_FIELD];
523
+ if (typeof id === "number") {
524
+ maxId = Math.max(maxId, id);
525
+ // Get the actual value for info extraction
526
+ const value = "__value" in itemObj ? itemObj.__value : item;
527
+ items.push(extractItemInfo(id, value));
528
+ }
529
+ }
530
+ return {
531
+ structure: {
532
+ rootType: "array",
533
+ itemCount: items.length,
534
+ items,
535
+ nextId: maxId + 1,
536
+ },
537
+ };
538
+ }
539
+ else if (data !== null && typeof data === "object") {
540
+ return {
541
+ structure: {
542
+ rootType: "object",
543
+ keys: Object.keys(data),
544
+ nextId: 1,
545
+ },
546
+ };
547
+ }
548
+ else {
549
+ return {
550
+ structure: {
551
+ rootType: "primitive",
552
+ nextId: 1,
553
+ },
554
+ };
555
+ }
556
+ }
557
+ /**
558
+ * Get a value from a JSON object by key
559
+ */
560
+ export function getByKey(currentContent, currentStructure, key) {
561
+ if (currentStructure.rootType !== "object") {
562
+ return {
563
+ value: null,
564
+ error: "Buffer is not a JSON object",
565
+ };
566
+ }
567
+ let data;
568
+ try {
569
+ data = JSON.parse(currentContent);
570
+ if (typeof data !== "object" || data === null || Array.isArray(data)) {
571
+ return {
572
+ value: null,
573
+ error: "Buffer content is not an object",
574
+ };
575
+ }
576
+ }
577
+ catch (e) {
578
+ return {
579
+ value: null,
580
+ error: `Failed to parse buffer: ${e.message}`,
581
+ };
582
+ }
583
+ if (!(key in data)) {
584
+ return {
585
+ value: null,
586
+ error: `Key '${key}' not found. Available keys: ${(currentStructure.keys ?? []).join(", ")}`,
587
+ };
588
+ }
589
+ return { value: data[key] };
590
+ }
591
+ /**
592
+ * Get items from a JSON array by index range (batch access)
593
+ * Returns items without internal __jicon_id fields
594
+ */
595
+ export function getItemsByRange(currentContent, currentStructure, start, count) {
596
+ if (currentStructure.rootType !== "array") {
597
+ return {
598
+ items: [],
599
+ progress: { start: 0, count: 0, total: 0, hasMore: false },
600
+ error: "Buffer is not a JSON array",
601
+ };
602
+ }
603
+ const parsed = parseJsonArray(currentContent);
604
+ if (!parsed.data) {
605
+ return {
606
+ items: [],
607
+ progress: { start: 0, count: 0, total: 0, hasMore: false },
608
+ error: parsed.error,
609
+ };
610
+ }
611
+ const data = parsed.data;
612
+ const total = data.length;
613
+ const actualStart = Math.max(0, Math.min(start, total));
614
+ const actualEnd = Math.min(actualStart + count, total);
615
+ const slicedData = data.slice(actualStart, actualEnd);
616
+ const items = slicedData.map(item => {
617
+ const id = item[JICON_ID_FIELD] ?? 0;
618
+ // Remove internal fields
619
+ if ("__value" in item) {
620
+ return { id, item: item.__value };
621
+ }
622
+ const { [JICON_ID_FIELD]: _id, ...cleanItem } = item;
623
+ return { id, item: cleanItem };
624
+ });
625
+ const hasMore = actualEnd < total;
626
+ return {
627
+ items,
628
+ progress: {
629
+ start: actualStart,
630
+ count: items.length,
631
+ total,
632
+ hasMore,
633
+ ...(hasMore && { nextStart: actualEnd }),
634
+ },
635
+ };
636
+ }
637
+ //# sourceMappingURL=json-structure.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-structure.js","sourceRoot":"","sources":["../../src/utils/json-structure.ts"],"names":[],"mappings":"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"}