@relayfile/adapter-confluence 0.1.0 → 0.1.2

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 (66) hide show
  1. package/discovery/confluence/.adapter.md +4 -4
  2. package/dist/__tests__/alias-slug.test.d.ts +2 -0
  3. package/dist/__tests__/alias-slug.test.d.ts.map +1 -0
  4. package/dist/__tests__/alias-slug.test.js +19 -0
  5. package/dist/__tests__/alias-slug.test.js.map +1 -0
  6. package/dist/__tests__/confluence-adapter.test.js +263 -11
  7. package/dist/__tests__/confluence-adapter.test.js.map +1 -1
  8. package/dist/__tests__/index-emission.test.d.ts +2 -0
  9. package/dist/__tests__/index-emission.test.d.ts.map +1 -0
  10. package/dist/__tests__/index-emission.test.js +67 -0
  11. package/dist/__tests__/index-emission.test.js.map +1 -0
  12. package/dist/__tests__/layout-prompt.test.d.ts +2 -0
  13. package/dist/__tests__/layout-prompt.test.d.ts.map +1 -0
  14. package/dist/__tests__/layout-prompt.test.js +23 -0
  15. package/dist/__tests__/layout-prompt.test.js.map +1 -0
  16. package/dist/__tests__/path-mapper.test.d.ts +2 -0
  17. package/dist/__tests__/path-mapper.test.d.ts.map +1 -0
  18. package/dist/__tests__/path-mapper.test.js +106 -0
  19. package/dist/__tests__/path-mapper.test.js.map +1 -0
  20. package/dist/__tests__/webhook-normalizer.test.d.ts +2 -0
  21. package/dist/__tests__/webhook-normalizer.test.d.ts.map +1 -0
  22. package/dist/__tests__/webhook-normalizer.test.js +106 -0
  23. package/dist/__tests__/webhook-normalizer.test.js.map +1 -0
  24. package/dist/alias-slug.d.ts +9 -0
  25. package/dist/alias-slug.d.ts.map +1 -0
  26. package/dist/alias-slug.js +23 -0
  27. package/dist/alias-slug.js.map +1 -0
  28. package/dist/confluence-adapter.d.ts +37 -0
  29. package/dist/confluence-adapter.d.ts.map +1 -1
  30. package/dist/confluence-adapter.js +245 -24
  31. package/dist/confluence-adapter.js.map +1 -1
  32. package/dist/index-emitter.d.ts +10 -0
  33. package/dist/index-emitter.d.ts.map +1 -0
  34. package/dist/index-emitter.js +26 -0
  35. package/dist/index-emitter.js.map +1 -0
  36. package/dist/index.d.ts +12 -3
  37. package/dist/index.d.ts.map +1 -1
  38. package/dist/index.js +8 -3
  39. package/dist/index.js.map +1 -1
  40. package/dist/layout-prompt.d.ts +7 -0
  41. package/dist/layout-prompt.d.ts.map +1 -0
  42. package/dist/layout-prompt.js +75 -0
  43. package/dist/layout-prompt.js.map +1 -0
  44. package/dist/path-mapper.d.ts +65 -2
  45. package/dist/path-mapper.d.ts.map +1 -1
  46. package/dist/path-mapper.js +186 -10
  47. package/dist/path-mapper.js.map +1 -1
  48. package/dist/queries.d.ts +22 -2
  49. package/dist/queries.d.ts.map +1 -1
  50. package/dist/queries.js +43 -2
  51. package/dist/queries.js.map +1 -1
  52. package/dist/resources.js +2 -2
  53. package/dist/resources.js.map +1 -1
  54. package/dist/types.d.ts +9 -0
  55. package/dist/types.d.ts.map +1 -1
  56. package/dist/types.js +1 -0
  57. package/dist/types.js.map +1 -1
  58. package/dist/webhook-normalizer.d.ts +59 -0
  59. package/dist/webhook-normalizer.d.ts.map +1 -0
  60. package/dist/webhook-normalizer.js +469 -0
  61. package/dist/webhook-normalizer.js.map +1 -0
  62. package/dist/writeback.d.ts +1 -2
  63. package/dist/writeback.d.ts.map +1 -1
  64. package/dist/writeback.js +1 -1
  65. package/dist/writeback.js.map +1 -1
  66. package/package.json +22 -2
@@ -1,4 +1,4 @@
1
- import { computeConfluencePath, confluencePagePath, confluenceSpacePath, } from './path-mapper.js';
1
+ import { computeConfluencePath, confluencePageByIdAliasPath, confluencePageByParentAliasPath, confluencePageBySpaceAliasPath, confluencePageByStatePath, confluencePageByTitleAliasPath, confluencePagePath, confluenceSpaceByIdAliasPath, confluenceSpaceByKeyAliasPath, confluenceSpaceByTitleAliasPath, confluenceSpacePath, } from './path-mapper.js';
2
2
  import { CONFLUENCE_PROVIDER_NAME, } from './types.js';
3
3
  import { resolveConfluenceWritebackRequest } from './writeback.js';
4
4
  const JSON_CONTENT_TYPE = 'application/json; charset=utf-8';
@@ -64,30 +64,19 @@ export class ConfluenceAdapter {
64
64
  };
65
65
  }
66
66
  async ingestWebhook(workspaceId, event) {
67
+ let normalized;
68
+ let canonicalPath;
69
+ let aliasPaths;
70
+ let isDelete;
71
+ let semantics;
72
+ let content;
67
73
  try {
68
- const normalized = this.normalizeEvent(event);
69
- const path = this.pathForEvent(normalized);
70
- if (this.isDeleteEvent(normalized)) {
71
- if (this.client.deleteFile) {
72
- await this.client.deleteFile({ workspaceId, path });
73
- return { filesWritten: 0, filesUpdated: 0, filesDeleted: 1, paths: [path], errors: [] };
74
- }
75
- }
76
- const writeResult = await this.client.writeFile({
77
- workspaceId,
78
- path,
79
- content: this.renderContent(workspaceId, normalized, this.isDeleteEvent(normalized)),
80
- contentType: JSON_CONTENT_TYPE,
81
- semantics: this.computeSemantics(normalized.objectType, normalized.objectId, normalized.payload),
82
- });
83
- const counts = inferWriteCounts(writeResult, this.isDeleteEvent(normalized));
84
- return {
85
- filesWritten: counts.filesWritten,
86
- filesUpdated: counts.filesUpdated,
87
- filesDeleted: counts.filesDeleted,
88
- paths: [path],
89
- errors: [],
90
- };
74
+ normalized = this.normalizeEvent(event);
75
+ canonicalPath = this.pathForEvent(normalized);
76
+ aliasPaths = this.aliasPathsForEvent(normalized);
77
+ isDelete = this.isDeleteEvent(normalized);
78
+ semantics = this.computeSemantics(normalized.objectType, normalized.objectId, normalized.payload);
79
+ content = this.renderContent(workspaceId, normalized, isDelete);
91
80
  }
92
81
  catch (error) {
93
82
  return {
@@ -98,6 +87,194 @@ export class ConfluenceAdapter {
98
87
  errors: [{ path: '', error: error instanceof Error ? error.message : String(error) }],
99
88
  };
100
89
  }
90
+ const targetPaths = [canonicalPath, ...aliasPaths];
91
+ if (isDelete) {
92
+ // Best-effort delete of every known path. Each file is independent
93
+ // (canonical bytes are duplicated to each alias), so a 404/transient
94
+ // error on one path must not skip the others — that's how callers
95
+ // end up with half-deleted records that the next sync writes over.
96
+ return this.fanoutDelete(workspaceId, targetPaths);
97
+ }
98
+ // Reconciliation: if the object was previously written, the prior alias
99
+ // set may differ from the new one (rename, status change, parent move,
100
+ // etc.). Read the stable by-id alias to recover the prior payload, then
101
+ // delete any aliases that no longer apply. The by-id alias is keyed only
102
+ // on objectId so it survives every other field change and is the right
103
+ // anchor for "was this record materialized before?".
104
+ const stalePaths = await this.computeStalePaths(workspaceId, normalized, targetPaths);
105
+ return this.fanoutWrite(workspaceId, targetPaths, content, semantics, isDelete, stalePaths);
106
+ }
107
+ // Per-path try/catch so one failure doesn't abandon the rest of the fan-out.
108
+ // Errors are accumulated and returned in `IngestResult.errors`; callers can
109
+ // re-attempt only the failed paths instead of having to re-derive the full
110
+ // set. We deliberately don't roll back successful writes on a later error —
111
+ // best-effort rollback can cascade failures and cloud's sync is idempotent
112
+ // (the next event for the same id will reconcile via `computeStalePaths`).
113
+ async fanoutDelete(workspaceId, paths) {
114
+ let filesDeleted = 0;
115
+ const errors = [];
116
+ const succeeded = [];
117
+ if (!this.client.deleteFile) {
118
+ return {
119
+ filesWritten: 0,
120
+ filesUpdated: 0,
121
+ filesDeleted: 0,
122
+ paths,
123
+ errors: paths.map((path) => ({ path, error: 'deleteFile not supported by client' })),
124
+ };
125
+ }
126
+ for (const path of paths) {
127
+ try {
128
+ await this.client.deleteFile({ workspaceId, path });
129
+ filesDeleted += 1;
130
+ succeeded.push(path);
131
+ }
132
+ catch (error) {
133
+ errors.push({ path, error: error instanceof Error ? error.message : String(error) });
134
+ }
135
+ }
136
+ return { filesWritten: 0, filesUpdated: 0, filesDeleted, paths: succeeded, errors };
137
+ }
138
+ async fanoutWrite(workspaceId, paths, content, semantics, isDelete, stalePaths) {
139
+ let filesWritten = 0;
140
+ let filesUpdated = 0;
141
+ let filesDeleted = 0;
142
+ const errors = [];
143
+ const succeeded = [];
144
+ // Reconciliation deletes first. If a stale path delete fails we log the
145
+ // error and continue — stale aliases are non-fatal (functional state is
146
+ // still correct, just bloated), and we want the canonical write to
147
+ // proceed so the new content is visible.
148
+ if (stalePaths.length > 0 && this.client.deleteFile) {
149
+ for (const path of stalePaths) {
150
+ try {
151
+ await this.client.deleteFile({ workspaceId, path });
152
+ filesDeleted += 1;
153
+ succeeded.push(path);
154
+ }
155
+ catch (error) {
156
+ errors.push({ path, error: error instanceof Error ? error.message : String(error) });
157
+ }
158
+ }
159
+ }
160
+ for (const path of paths) {
161
+ try {
162
+ const result = await this.client.writeFile({
163
+ workspaceId,
164
+ path,
165
+ content,
166
+ contentType: JSON_CONTENT_TYPE,
167
+ semantics,
168
+ });
169
+ const counts = inferWriteCounts(result, isDelete);
170
+ filesWritten += counts.filesWritten;
171
+ filesUpdated += counts.filesUpdated;
172
+ filesDeleted += counts.filesDeleted;
173
+ succeeded.push(path);
174
+ }
175
+ catch (error) {
176
+ errors.push({ path, error: error instanceof Error ? error.message : String(error) });
177
+ }
178
+ }
179
+ return { filesWritten, filesUpdated, filesDeleted, paths: succeeded, errors };
180
+ }
181
+ // Compute the set of alias/canonical paths that were emitted on a prior
182
+ // write but no longer apply after this update. Requires `readFile` on the
183
+ // client; when absent (legacy clients), returns an empty array and the
184
+ // adapter degrades to "no reconciliation" (matches pre-#69 behavior).
185
+ // Read failures (404, network, parse) are non-fatal — we'd rather leave
186
+ // stale aliases behind than block the canonical write on a stat call.
187
+ async computeStalePaths(workspaceId, normalized, newPaths) {
188
+ if (typeof this.client.readFile !== 'function')
189
+ return [];
190
+ const byIdPath = normalized.objectType === 'page'
191
+ ? confluencePageByIdAliasPath(normalized.objectId)
192
+ : normalized.objectType === 'space'
193
+ ? confluenceSpaceByIdAliasPath(normalized.objectId)
194
+ : null;
195
+ if (!byIdPath)
196
+ return [];
197
+ let priorPayload = null;
198
+ try {
199
+ const prior = await this.client.readFile({ workspaceId, path: byIdPath });
200
+ if (!prior || typeof prior.content !== 'string')
201
+ return [];
202
+ const wrapper = JSON.parse(prior.content);
203
+ if (!isRecord(wrapper) || !isRecord(wrapper.payload))
204
+ return [];
205
+ priorPayload = wrapper.payload;
206
+ }
207
+ catch {
208
+ return [];
209
+ }
210
+ const priorEvent = {
211
+ provider: CONFLUENCE_PROVIDER_NAME,
212
+ eventType: `${normalized.objectType}.reconcile`,
213
+ objectType: normalized.objectType,
214
+ objectId: normalized.objectId,
215
+ payload: priorPayload,
216
+ };
217
+ const priorCanonical = this.pathForEvent(priorEvent);
218
+ const priorAliases = this.aliasPathsForEvent(priorEvent);
219
+ const priorPaths = new Set([priorCanonical, ...priorAliases]);
220
+ const currentPaths = new Set(newPaths);
221
+ const stale = [];
222
+ for (const p of priorPaths) {
223
+ if (!currentPaths.has(p))
224
+ stale.push(p);
225
+ }
226
+ return stale;
227
+ }
228
+ /**
229
+ * Returns the by-* alias paths that should be written alongside the
230
+ * canonical record for an event. Aliases store the same bytes as the
231
+ * canonical path so any one of them resolves to the same JSON. Callers
232
+ * doing bulk materialization (e.g. `materializePageFiles`) reuse this so
233
+ * write-path and read-path stay symmetrical.
234
+ *
235
+ * Collision handling: `by-title` uses the canonical slugifier; when two
236
+ * pages share a title in the same scope, the second write wins (Confluence
237
+ * agents almost never lean on by-title for round-trip, so we keep the
238
+ * primary alias collision-free instead of forcing every reader to know the
239
+ * hash suffix). Callers that need the disambiguated form can compute it
240
+ * explicitly via `confluencePageByTitleAliasPath(title, id, true)`.
241
+ */
242
+ aliasPathsForEvent(event) {
243
+ const paths = [];
244
+ const id = event.objectId;
245
+ if (event.objectType === 'page') {
246
+ paths.push(confluencePageByIdAliasPath(id));
247
+ const title = readString(event.payload.title);
248
+ if (title && slugifies(title)) {
249
+ paths.push(confluencePageByTitleAliasPath(title, id));
250
+ }
251
+ const status = readString(event.payload.status);
252
+ if (status) {
253
+ paths.push(confluencePageByStatePath(status, id));
254
+ }
255
+ const spaceId = readString(event.payload.spaceId);
256
+ if (spaceId) {
257
+ paths.push(confluencePageBySpaceAliasPath(spaceId, id));
258
+ }
259
+ const parentId = readString(event.payload.parentId);
260
+ if (parentId) {
261
+ paths.push(confluencePageByParentAliasPath(parentId, id));
262
+ }
263
+ return paths;
264
+ }
265
+ if (event.objectType === 'space') {
266
+ paths.push(confluenceSpaceByIdAliasPath(id));
267
+ const name = readString(event.payload.name) ?? readString(event.payload.title);
268
+ if (name && slugifies(name)) {
269
+ paths.push(confluenceSpaceByTitleAliasPath(name, id));
270
+ }
271
+ const key = readString(event.payload.key);
272
+ if (key) {
273
+ paths.push(confluenceSpaceByKeyAliasPath(key));
274
+ }
275
+ return paths;
276
+ }
277
+ return paths;
101
278
  }
102
279
  writeBack(path, content) {
103
280
  return resolveConfluenceWritebackRequest(path, content);
@@ -124,6 +301,39 @@ export class ConfluenceAdapter {
124
301
  },
125
302
  };
126
303
  }
304
+ /**
305
+ * Materialize a page into the canonical path plus its by-* alias paths.
306
+ * Callers performing bulk sync (cloud full-resync) should iterate the
307
+ * returned `paths` and write the same `payload` bytes to each — that's
308
+ * how the runtime contract treats aliases (duplicated bytes, single
309
+ * source of truth at the canonical path).
310
+ */
311
+ materializePageFiles(page) {
312
+ const canonical = this.materializePage(page);
313
+ const aliases = this.aliasPathsForEvent({
314
+ provider: CONFLUENCE_PROVIDER_NAME,
315
+ eventType: 'page.synced',
316
+ objectType: 'page',
317
+ objectId: page.id,
318
+ payload: page,
319
+ });
320
+ return { paths: [canonical.path, ...aliases], payload: canonical.payload };
321
+ }
322
+ /**
323
+ * Materialize a space into the canonical path plus its by-* alias paths.
324
+ * See {@link materializePageFiles} for the bulk-sync contract.
325
+ */
326
+ materializeSpaceFiles(space) {
327
+ const canonical = this.materializeSpace(space);
328
+ const aliases = this.aliasPathsForEvent({
329
+ provider: CONFLUENCE_PROVIDER_NAME,
330
+ eventType: 'space.synced',
331
+ objectType: 'space',
332
+ objectId: space.id,
333
+ payload: space,
334
+ });
335
+ return { paths: [canonical.path, ...aliases], payload: canonical.payload };
336
+ }
127
337
  normalizeEvent(event) {
128
338
  if (isConfluenceNormalizedEvent(event))
129
339
  return event;
@@ -208,6 +418,17 @@ function readString(value) {
208
418
  function isRecord(value) {
209
419
  return typeof value === 'object' && value !== null && !Array.isArray(value);
210
420
  }
421
+ /**
422
+ * Returns true when the input contains enough alphanumeric content for the
423
+ * shared alias slugifier to produce a non-fallback result. We use this to
424
+ * skip emitting `by-title/untitled.json` aliases that would collide for
425
+ * every emoji-only / punctuation-only title — the by-id alias still resolves
426
+ * those records. Mirrors the NFKD + combining-mark strip from `alias-slug.ts`.
427
+ */
428
+ function slugifies(value) {
429
+ const normalized = value.normalize('NFKD').replace(/[̀-ͯ]/g, '');
430
+ return /[a-zA-Z0-9]/u.test(normalized);
431
+ }
211
432
  function isConfluenceNormalizedEvent(value) {
212
433
  return (isRecord(value) &&
213
434
  value.provider === CONFLUENCE_PROVIDER_NAME &&
@@ -1 +1 @@
1
- {"version":3,"file":"confluence-adapter.js","sourceRoot":"","sources":["../src/confluence-adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"confluence-adapter.js","sourceRoot":"","sources":["../src/confluence-adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { ConfluencePageIndexRow, ConfluenceSpaceIndexRow } from './queries.js';
2
+ export type ConfluenceIndexBucket = 'pages' | 'spaces';
3
+ export interface ConfluenceIndexFile {
4
+ path: string;
5
+ contentType: 'application/json; charset=utf-8';
6
+ content: string;
7
+ }
8
+ export declare function buildConfluenceIndexFile(bucket: 'pages', rows: ConfluencePageIndexRow[]): ConfluenceIndexFile;
9
+ export declare function buildConfluenceIndexFile(bucket: 'spaces', rows: ConfluenceSpaceIndexRow[]): ConfluenceIndexFile;
10
+ //# sourceMappingURL=index-emitter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-emitter.d.ts","sourceRoot":"","sources":["../src/index-emitter.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAA0B,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAE5G,MAAM,MAAM,qBAAqB,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEvD,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,iCAAiC,CAAC;IAC/C,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,OAAO,EACf,IAAI,EAAE,sBAAsB,EAAE,GAC7B,mBAAmB,CAAC;AACvB,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,QAAQ,EAChB,IAAI,EAAE,uBAAuB,EAAE,GAC9B,mBAAmB,CAAC"}
@@ -0,0 +1,26 @@
1
+ import { confluencePagesIndexPath, confluenceSpacesIndexPath, } from './path-mapper.js';
2
+ export function buildConfluenceIndexFile(bucket, rows) {
3
+ const sortedRows = [...rows].sort(compareIndexRows());
4
+ return {
5
+ path: indexPathForBucket(bucket),
6
+ contentType: 'application/json; charset=utf-8',
7
+ content: `${JSON.stringify(sortedRows)}\n`,
8
+ };
9
+ }
10
+ function indexPathForBucket(bucket) {
11
+ switch (bucket) {
12
+ case 'pages':
13
+ return confluencePagesIndexPath();
14
+ case 'spaces':
15
+ return confluenceSpacesIndexPath();
16
+ }
17
+ }
18
+ function compareIndexRows() {
19
+ return (left, right) => {
20
+ if (left.updated !== right.updated) {
21
+ return right.updated.localeCompare(left.updated);
22
+ }
23
+ return left.id.localeCompare(right.id);
24
+ };
25
+ }
26
+ //# sourceMappingURL=index-emitter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-emitter.js","sourceRoot":"","sources":["../src/index-emitter.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,yBAAyB,GAC1B,MAAM,kBAAkB,CAAC;AAmB1B,MAAM,UAAU,wBAAwB,CACtC,MAA6B,EAC7B,IAAmC;IAEnC,MAAM,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;IACtD,OAAO;QACL,IAAI,EAAE,kBAAkB,CAAC,MAAM,CAAC;QAChC,WAAW,EAAE,iCAAiC;QAC9C,OAAO,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI;KAC3C,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,MAA6B;IACvD,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,OAAO;YACV,OAAO,wBAAwB,EAAE,CAAC;QACpC,KAAK,QAAQ;YACX,OAAO,yBAAyB,EAAE,CAAC;IACvC,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB;IACvB,OAAO,CAAC,IAA4B,EAAE,KAA6B,EAAU,EAAE;QAC7E,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;YACnC,OAAO,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnD,CAAC;QACD,OAAO,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACzC,CAAC,CAAC;AACJ,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,8 +1,17 @@
1
1
  export { ConfluenceAdapter, } from './confluence-adapter.js';
2
2
  export type { ConnectionProvider, IngestError, IngestResult, ProxyRequest, ProxyResponse, } from './confluence-adapter.js';
3
- export { CONFLUENCE_OBJECT_TYPES, computeConfluencePath, confluencePagePath, confluenceSpacePath, encodeConfluencePathSegment, extractConfluenceIdFromPathSegment, normalizeConfluenceObjectType, } from './path-mapper.js';
4
- export { CONFLUENCE_API_PAGES_ROUTE, CONFLUENCE_API_SPACES_ROUTE, resolveConfluenceReadRequest, } from './queries.js';
5
- export { resolveConfluenceDeleteRequest, resolveConfluenceWritebackRequest, } from './writeback.js';
3
+ export { CONFLUENCE_OBJECT_TYPES, CONFLUENCE_CANONICAL_PAGE_STATUSES, CONFLUENCE_PATH_ROOT, computeConfluencePath, confluenceByIdAliasPath, confluenceByTitleAliasPath, confluencePageByIdAliasPath, confluencePageByParentAliasPath, confluencePageBySpaceAliasPath, confluencePageByStatePath, confluencePageByTitleAliasPath, confluencePagePath, confluencePagesIndexPath, confluenceProviderRootIndexPath, confluenceSpaceByIdAliasPath, confluenceSpaceByKeyAliasPath, confluenceSpaceByTitleAliasPath, confluenceSpacePath, confluenceSpacesIndexPath, encodeConfluencePathSegment, extractConfluenceIdFromPathSegment, nameWithId, normalizeConfluenceObjectType, normalizeNangoConfluenceModel, parseNameWithId, slugifyStatusName, tryNormalizeConfluenceObjectType, } from './path-mapper.js';
4
+ export type { ConfluencePathObjectType, NameWithIdOptions, ParseNameWithIdResult, } from './path-mapper.js';
5
+ export { aliasCollisionSuffix, slugifyAlias, } from './alias-slug.js';
6
+ export { confluenceLayoutPromptFile, CONFLUENCE_LAYOUT_PROMPT, } from './layout-prompt.js';
7
+ export { buildConfluenceIndexFile, } from './index-emitter.js';
8
+ export type { ConfluenceIndexBucket, ConfluenceIndexFile, } from './index-emitter.js';
9
+ export { CONFLUENCE_API_SPACES_ROUTE, confluencePageIndexRow, confluenceSpaceIndexRow, getConfluencePageHumanReadable, getConfluenceSpaceHumanReadable, resolveConfluenceReadRequest, } from './queries.js';
10
+ export type { ConfluenceBaseIndexRow, ConfluencePageIndexRow, ConfluenceSpaceIndexRow, } from './queries.js';
11
+ export { CONFLUENCE_API_PAGES_ROUTE, } from './types.js';
6
12
  export type * from './types.js';
13
+ export { ReadOnlyFieldError, resolveConfluenceDeleteRequest, resolveConfluenceWritebackRequest, } from './writeback.js';
14
+ export { assertValidConfluenceWebhookSignature, computeConfluenceWebhookSignature, CONFLUENCE_DELIVERY_HEADER, CONFLUENCE_EVENT_HEADER, CONFLUENCE_PROVIDER, CONFLUENCE_SIGNATURE_HEADER, extractConfluenceConnectionMetadata, extractConfluenceEventType, extractConfluenceObjectId, extractConfluenceObjectType, normalizeConfluenceWebhook, parseConfluenceWebhookPayload, validateConfluenceWebhookSignature, validateConfluenceWebhookTimestamp, } from './webhook-normalizer.js';
15
+ export type { ConfluenceWebhookConnectionMetadata, ConfluenceWebhookHeaders, ConfluenceWebhookSignatureValidationResult, ConfluenceWebhookTimestampValidationResult, } from './webhook-normalizer.js';
7
16
  export * from './resources.js';
8
17
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,GAClB,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACV,kBAAkB,EAClB,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,aAAa,GACd,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,kBAAkB,EAClB,mBAAmB,EACnB,2BAA2B,EAC3B,kCAAkC,EAClC,6BAA6B,GAC9B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,0BAA0B,EAC1B,2BAA2B,EAC3B,4BAA4B,GAC7B,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,8BAA8B,EAC9B,iCAAiC,GAClC,MAAM,gBAAgB,CAAC;AACxB,mBAAmB,YAAY,CAAC;AAChC,cAAc,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,GAClB,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACV,kBAAkB,EAClB,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,aAAa,GACd,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,uBAAuB,EACvB,kCAAkC,EAClC,oBAAoB,EACpB,qBAAqB,EACrB,uBAAuB,EACvB,0BAA0B,EAC1B,2BAA2B,EAC3B,+BAA+B,EAC/B,8BAA8B,EAC9B,yBAAyB,EACzB,8BAA8B,EAC9B,kBAAkB,EAClB,wBAAwB,EACxB,+BAA+B,EAC/B,4BAA4B,EAC5B,6BAA6B,EAC7B,+BAA+B,EAC/B,mBAAmB,EACnB,yBAAyB,EACzB,2BAA2B,EAC3B,kCAAkC,EAClC,UAAU,EACV,6BAA6B,EAC7B,6BAA6B,EAC7B,eAAe,EACf,iBAAiB,EACjB,gCAAgC,GACjC,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,wBAAwB,EACxB,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,oBAAoB,EACpB,YAAY,GACb,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,0BAA0B,EAC1B,wBAAwB,GACzB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,wBAAwB,GACzB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACV,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,2BAA2B,EAC3B,sBAAsB,EACtB,uBAAuB,EACvB,8BAA8B,EAC9B,+BAA+B,EAC/B,4BAA4B,GAC7B,MAAM,cAAc,CAAC;AACtB,YAAY,EACV,sBAAsB,EACtB,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,0BAA0B,GAC3B,MAAM,YAAY,CAAC;AACpB,mBAAmB,YAAY,CAAC;AAEhC,OAAO,EACL,kBAAkB,EAClB,8BAA8B,EAC9B,iCAAiC,GAClC,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,qCAAqC,EACrC,iCAAiC,EACjC,0BAA0B,EAC1B,uBAAuB,EACvB,mBAAmB,EACnB,2BAA2B,EAC3B,mCAAmC,EACnC,0BAA0B,EAC1B,yBAAyB,EACzB,2BAA2B,EAC3B,0BAA0B,EAC1B,6BAA6B,EAC7B,kCAAkC,EAClC,kCAAkC,GACnC,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACV,mCAAmC,EACnC,wBAAwB,EACxB,0CAA0C,EAC1C,0CAA0C,GAC3C,MAAM,yBAAyB,CAAC;AAEjC,cAAc,gBAAgB,CAAC"}
package/dist/index.js CHANGED
@@ -1,6 +1,11 @@
1
1
  export { ConfluenceAdapter, } from './confluence-adapter.js';
2
- export { CONFLUENCE_OBJECT_TYPES, computeConfluencePath, confluencePagePath, confluenceSpacePath, encodeConfluencePathSegment, extractConfluenceIdFromPathSegment, normalizeConfluenceObjectType, } from './path-mapper.js';
3
- export { CONFLUENCE_API_PAGES_ROUTE, CONFLUENCE_API_SPACES_ROUTE, resolveConfluenceReadRequest, } from './queries.js';
4
- export { resolveConfluenceDeleteRequest, resolveConfluenceWritebackRequest, } from './writeback.js';
2
+ export { CONFLUENCE_OBJECT_TYPES, CONFLUENCE_CANONICAL_PAGE_STATUSES, CONFLUENCE_PATH_ROOT, computeConfluencePath, confluenceByIdAliasPath, confluenceByTitleAliasPath, confluencePageByIdAliasPath, confluencePageByParentAliasPath, confluencePageBySpaceAliasPath, confluencePageByStatePath, confluencePageByTitleAliasPath, confluencePagePath, confluencePagesIndexPath, confluenceProviderRootIndexPath, confluenceSpaceByIdAliasPath, confluenceSpaceByKeyAliasPath, confluenceSpaceByTitleAliasPath, confluenceSpacePath, confluenceSpacesIndexPath, encodeConfluencePathSegment, extractConfluenceIdFromPathSegment, nameWithId, normalizeConfluenceObjectType, normalizeNangoConfluenceModel, parseNameWithId, slugifyStatusName, tryNormalizeConfluenceObjectType, } from './path-mapper.js';
3
+ export { aliasCollisionSuffix, slugifyAlias, } from './alias-slug.js';
4
+ export { confluenceLayoutPromptFile, CONFLUENCE_LAYOUT_PROMPT, } from './layout-prompt.js';
5
+ export { buildConfluenceIndexFile, } from './index-emitter.js';
6
+ export { CONFLUENCE_API_SPACES_ROUTE, confluencePageIndexRow, confluenceSpaceIndexRow, getConfluencePageHumanReadable, getConfluenceSpaceHumanReadable, resolveConfluenceReadRequest, } from './queries.js';
7
+ export { CONFLUENCE_API_PAGES_ROUTE, } from './types.js';
8
+ export { ReadOnlyFieldError, resolveConfluenceDeleteRequest, resolveConfluenceWritebackRequest, } from './writeback.js';
9
+ export { assertValidConfluenceWebhookSignature, computeConfluenceWebhookSignature, CONFLUENCE_DELIVERY_HEADER, CONFLUENCE_EVENT_HEADER, CONFLUENCE_PROVIDER, CONFLUENCE_SIGNATURE_HEADER, extractConfluenceConnectionMetadata, extractConfluenceEventType, extractConfluenceObjectId, extractConfluenceObjectType, normalizeConfluenceWebhook, parseConfluenceWebhookPayload, validateConfluenceWebhookSignature, validateConfluenceWebhookTimestamp, } from './webhook-normalizer.js';
5
10
  export * from './resources.js';
6
11
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,GAClB,MAAM,yBAAyB,CAAC;AAQjC,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,kBAAkB,EAClB,mBAAmB,EACnB,2BAA2B,EAC3B,kCAAkC,EAClC,6BAA6B,GAC9B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,0BAA0B,EAC1B,2BAA2B,EAC3B,4BAA4B,GAC7B,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,8BAA8B,EAC9B,iCAAiC,GAClC,MAAM,gBAAgB,CAAC;AAExB,cAAc,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,GAClB,MAAM,yBAAyB,CAAC;AASjC,OAAO,EACL,uBAAuB,EACvB,kCAAkC,EAClC,oBAAoB,EACpB,qBAAqB,EACrB,uBAAuB,EACvB,0BAA0B,EAC1B,2BAA2B,EAC3B,+BAA+B,EAC/B,8BAA8B,EAC9B,yBAAyB,EACzB,8BAA8B,EAC9B,kBAAkB,EAClB,wBAAwB,EACxB,+BAA+B,EAC/B,4BAA4B,EAC5B,6BAA6B,EAC7B,+BAA+B,EAC/B,mBAAmB,EACnB,yBAAyB,EACzB,2BAA2B,EAC3B,kCAAkC,EAClC,UAAU,EACV,6BAA6B,EAC7B,6BAA6B,EAC7B,eAAe,EACf,iBAAiB,EACjB,gCAAgC,GACjC,MAAM,kBAAkB,CAAC;AAO1B,OAAO,EACL,oBAAoB,EACpB,YAAY,GACb,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,0BAA0B,EAC1B,wBAAwB,GACzB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,wBAAwB,GACzB,MAAM,oBAAoB,CAAC;AAM5B,OAAO,EACL,2BAA2B,EAC3B,sBAAsB,EACtB,uBAAuB,EACvB,8BAA8B,EAC9B,+BAA+B,EAC/B,4BAA4B,GAC7B,MAAM,cAAc,CAAC;AAOtB,OAAO,EACL,0BAA0B,GAC3B,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,kBAAkB,EAClB,8BAA8B,EAC9B,iCAAiC,GAClC,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,qCAAqC,EACrC,iCAAiC,EACjC,0BAA0B,EAC1B,uBAAuB,EACvB,mBAAmB,EACnB,2BAA2B,EAC3B,mCAAmC,EACnC,0BAA0B,EAC1B,yBAAyB,EACzB,2BAA2B,EAC3B,0BAA0B,EAC1B,6BAA6B,EAC7B,kCAAkC,EAClC,kCAAkC,GACnC,MAAM,yBAAyB,CAAC;AAQjC,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,7 @@
1
+ export declare const CONFLUENCE_LAYOUT_PROMPT = "# Confluence Mount Layout\n\nAlways run `ls` before constructing a path. v2 standardizes human-readable leaf names to `<sanitized-title>__<id>`, so consumers should inspect the live directory instead of guessing a filename.\n\n## Tree\n\n`/confluence/LAYOUT.md` is this guide.\n`/confluence/pages/` and `/confluence/spaces/` each own their canonical JSON records plus a sibling `_index.json` and the `by-*` alias subtrees described below.\nSpace-scoped pages also materialize under `/confluence/spaces/<spaceId>/pages/<title>__<pageId>.json` so an agent can resolve a page by its containing space.\n\n## Indexes\n\n`/confluence/pages/_index.json` rows use:\n\n```json\n{ \"id\": \"<id>\", \"title\": \"<human-readable>\", \"updated\": \"<iso8601>\", \"spaceId\": \"<spaceId>\", \"status\": \"<page status>\" }\n```\n\n`/confluence/spaces/_index.json` rows use:\n\n```json\n{ \"id\": \"<id>\", \"title\": \"<human-readable>\", \"updated\": \"<iso8601>\", \"key\": \"<space key>\" }\n```\n\n## Page Aliases\n\nEvery page is duplicated into the `by-*` paths below \u2014 they all resolve to identical JSON bytes. Use whichever lookup primitive you have at hand:\n\n- Canonical: `/confluence/pages/<title>__<pageId>.json` (or the space-scoped `/confluence/spaces/<spaceId>/pages/...` variant).\n- By id: `/confluence/pages/by-id/<pageId>.json` \u2014 stable when the title changes.\n- By title: `/confluence/pages/by-title/<sanitized-title>.json` \u2014 last writer wins on title collisions; compute the disambiguated form with `confluencePageByTitleAliasPath(title, id, true)` for guaranteed uniqueness (8-char hex suffix on the id).\n- By state: `/confluence/pages/by-state/<status>/<pageId>.json` \u2014 `current`, `draft`, `archived`, or `trashed` (v2 documents only `current|draft`; archive/trash variants surface in real mounts).\n- By space: `/confluence/pages/by-space/<spaceId>/<pageId>.json` \u2014 flat sibling of the space-scoped canonical tree so `ls` works without slug resolution.\n- By parent: `/confluence/pages/by-parent/<parentId>/<pageId>.json` \u2014 only emitted when `payload.parentId` is present (top-level pages have no parent record).\n\n## Space Aliases\n\n- Canonical: `/confluence/spaces/<name>__<spaceId>.json`.\n- By id: `/confluence/spaces/by-id/<spaceId>.json`.\n- By title: `/confluence/spaces/by-title/<sanitized-name>.json`.\n- By key: `/confluence/spaces/by-key/<KEY>.json` \u2014 the globally-unique human-meaningful space key (e.g. `ENG`). Mirrors the v2 `GET /spaces?keys=` filter.\n\n## JSONL And Querying\n\nConfluence does not emit JSONL in this adapter today. Each page and space is a standalone `.json` record, duplicated verbatim into every alias path it qualifies for.\n\nExamples:\n\n```bash\n# List every page in a space without resolving titles\nls /confluence/pages/by-space/12345/\n\n# Look up a space by its stable Confluence key\njq '.payload | {id, name, homepageId}' /confluence/spaces/by-key/ENG.json\n\n# Iterate drafts pending review\nls /confluence/pages/by-state/draft/\njq '.payload.title' /confluence/pages/by-state/draft/*.json\n\n# Walk a page's children\nls /confluence/pages/by-parent/98765/\njq '.payload | {id, title, status}' /confluence/pages/by-parent/98765/*.json\n\n# Sorted snapshot from the canonical index\njq '.[] | {id, title, status}' /confluence/pages/_index.json\n```\n";
2
+ export declare function confluenceLayoutPromptFile(): {
3
+ path: string;
4
+ contentType: "text/markdown; charset=utf-8";
5
+ content: string;
6
+ };
7
+ //# sourceMappingURL=layout-prompt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout-prompt.d.ts","sourceRoot":"","sources":["../src/layout-prompt.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,wBAAwB,wxGAkEpC,CAAC;AAEF,wBAAgB,0BAA0B;;;;EAMzC"}
@@ -0,0 +1,75 @@
1
+ export const CONFLUENCE_LAYOUT_PROMPT = `# Confluence Mount Layout
2
+
3
+ Always run \`ls\` before constructing a path. v2 standardizes human-readable leaf names to \`<sanitized-title>__<id>\`, so consumers should inspect the live directory instead of guessing a filename.
4
+
5
+ ## Tree
6
+
7
+ \`/confluence/LAYOUT.md\` is this guide.
8
+ \`/confluence/pages/\` and \`/confluence/spaces/\` each own their canonical JSON records plus a sibling \`_index.json\` and the \`by-*\` alias subtrees described below.
9
+ Space-scoped pages also materialize under \`/confluence/spaces/<spaceId>/pages/<title>__<pageId>.json\` so an agent can resolve a page by its containing space.
10
+
11
+ ## Indexes
12
+
13
+ \`/confluence/pages/_index.json\` rows use:
14
+
15
+ \`\`\`json
16
+ { "id": "<id>", "title": "<human-readable>", "updated": "<iso8601>", "spaceId": "<spaceId>", "status": "<page status>" }
17
+ \`\`\`
18
+
19
+ \`/confluence/spaces/_index.json\` rows use:
20
+
21
+ \`\`\`json
22
+ { "id": "<id>", "title": "<human-readable>", "updated": "<iso8601>", "key": "<space key>" }
23
+ \`\`\`
24
+
25
+ ## Page Aliases
26
+
27
+ Every page is duplicated into the \`by-*\` paths below — they all resolve to identical JSON bytes. Use whichever lookup primitive you have at hand:
28
+
29
+ - Canonical: \`/confluence/pages/<title>__<pageId>.json\` (or the space-scoped \`/confluence/spaces/<spaceId>/pages/...\` variant).
30
+ - By id: \`/confluence/pages/by-id/<pageId>.json\` — stable when the title changes.
31
+ - By title: \`/confluence/pages/by-title/<sanitized-title>.json\` — last writer wins on title collisions; compute the disambiguated form with \`confluencePageByTitleAliasPath(title, id, true)\` for guaranteed uniqueness (8-char hex suffix on the id).
32
+ - By state: \`/confluence/pages/by-state/<status>/<pageId>.json\` — \`current\`, \`draft\`, \`archived\`, or \`trashed\` (v2 documents only \`current|draft\`; archive/trash variants surface in real mounts).
33
+ - By space: \`/confluence/pages/by-space/<spaceId>/<pageId>.json\` — flat sibling of the space-scoped canonical tree so \`ls\` works without slug resolution.
34
+ - By parent: \`/confluence/pages/by-parent/<parentId>/<pageId>.json\` — only emitted when \`payload.parentId\` is present (top-level pages have no parent record).
35
+
36
+ ## Space Aliases
37
+
38
+ - Canonical: \`/confluence/spaces/<name>__<spaceId>.json\`.
39
+ - By id: \`/confluence/spaces/by-id/<spaceId>.json\`.
40
+ - By title: \`/confluence/spaces/by-title/<sanitized-name>.json\`.
41
+ - By key: \`/confluence/spaces/by-key/<KEY>.json\` — the globally-unique human-meaningful space key (e.g. \`ENG\`). Mirrors the v2 \`GET /spaces?keys=\` filter.
42
+
43
+ ## JSONL And Querying
44
+
45
+ Confluence does not emit JSONL in this adapter today. Each page and space is a standalone \`.json\` record, duplicated verbatim into every alias path it qualifies for.
46
+
47
+ Examples:
48
+
49
+ \`\`\`bash
50
+ # List every page in a space without resolving titles
51
+ ls /confluence/pages/by-space/12345/
52
+
53
+ # Look up a space by its stable Confluence key
54
+ jq '.payload | {id, name, homepageId}' /confluence/spaces/by-key/ENG.json
55
+
56
+ # Iterate drafts pending review
57
+ ls /confluence/pages/by-state/draft/
58
+ jq '.payload.title' /confluence/pages/by-state/draft/*.json
59
+
60
+ # Walk a page's children
61
+ ls /confluence/pages/by-parent/98765/
62
+ jq '.payload | {id, title, status}' /confluence/pages/by-parent/98765/*.json
63
+
64
+ # Sorted snapshot from the canonical index
65
+ jq '.[] | {id, title, status}' /confluence/pages/_index.json
66
+ \`\`\`
67
+ `;
68
+ export function confluenceLayoutPromptFile() {
69
+ return {
70
+ path: '/confluence/LAYOUT.md',
71
+ contentType: 'text/markdown; charset=utf-8',
72
+ content: CONFLUENCE_LAYOUT_PROMPT.endsWith('\n') ? CONFLUENCE_LAYOUT_PROMPT : `${CONFLUENCE_LAYOUT_PROMPT}\n`,
73
+ };
74
+ }
75
+ //# sourceMappingURL=layout-prompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout-prompt.js","sourceRoot":"","sources":["../src/layout-prompt.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,wBAAwB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkEvC,CAAC;AAEF,MAAM,UAAU,0BAA0B;IACxC,OAAO;QACL,IAAI,EAAE,uBAAuB;QAC7B,WAAW,EAAE,8BAAuC;QACpD,OAAO,EAAE,wBAAwB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,GAAG,wBAAwB,IAAI;KAC9G,CAAC;AACJ,CAAC"}
@@ -1,12 +1,75 @@
1
+ import { CONFLUENCE_PATH_ROOT } from './types.js';
2
+ export { CONFLUENCE_PATH_ROOT };
1
3
  export declare const CONFLUENCE_OBJECT_TYPES: readonly ["page", "space"];
2
4
  export type ConfluencePathObjectType = (typeof CONFLUENCE_OBJECT_TYPES)[number];
5
+ /**
6
+ * Confluence-canonical page statuses, used for the by-state alias scope. The
7
+ * Confluence REST v2 schema (see `discovery/confluence/pages/.schema.json`)
8
+ * pins this to `current | draft`, but real payloads also surface `archived`
9
+ * and `trashed`. We accept any non-empty string and emit it lowercased; the
10
+ * canonical-status list below is informational for downstream readers.
11
+ */
12
+ export declare const CONFLUENCE_CANONICAL_PAGE_STATUSES: readonly ["current", "draft", "archived", "trashed"];
3
13
  export declare function encodeConfluencePathSegment(value: string): string;
14
+ export interface NameWithIdOptions {
15
+ existingNames?: Set<string>;
16
+ }
17
+ export interface ParseNameWithIdResult {
18
+ humanReadable: string | null;
19
+ id: string;
20
+ ext: string | null;
21
+ }
22
+ export declare function nameWithId(humanReadable: string | undefined, id: string, opts?: NameWithIdOptions): string;
23
+ export declare function parseNameWithId(filename: string): ParseNameWithIdResult;
4
24
  export declare function normalizeConfluenceObjectType(objectType: string): ConfluencePathObjectType;
5
- export declare function confluenceSpacePath(spaceIdOrKey: string, name?: string): string;
6
- export declare function confluencePagePath(pageId: string, title?: string, spaceId?: string): string;
25
+ export declare function tryNormalizeConfluenceObjectType(objectType: string): ConfluencePathObjectType | undefined;
26
+ export declare function normalizeNangoConfluenceModel(model: string): ConfluencePathObjectType;
27
+ export declare function slugifyStatusName(status: string): string;
28
+ export declare function confluenceSpacePath(spaceIdOrKey: string, name?: string, opts?: NameWithIdOptions): string;
29
+ export declare function confluencePagePath(pageId: string, title?: string, spaceId?: string, opts?: NameWithIdOptions): string;
30
+ export declare function confluencePagesIndexPath(): string;
31
+ export declare function confluenceSpacesIndexPath(): string;
32
+ export declare function confluenceProviderRootIndexPath(): string;
33
+ export declare function confluencePageByStatePath(status: string, pageId: string): string;
34
+ export declare function confluenceByTitleAliasPath(scope: string, title: string, id: string, colliding?: boolean): string;
35
+ export declare function confluenceByIdAliasPath(scope: string, identifier: string): string;
36
+ export declare function confluencePageByIdAliasPath(id: string): string;
37
+ export declare function confluencePageByTitleAliasPath(title: string, id: string, colliding?: boolean): string;
38
+ export declare function confluenceSpaceByIdAliasPath(id: string): string;
39
+ export declare function confluenceSpaceByTitleAliasPath(title: string, id: string, colliding?: boolean): string;
40
+ /**
41
+ * `by-key/<KEY>.json` resolves a space by its globally-unique Confluence
42
+ * space key (e.g. `ENG`). The v2 `GET /spaces` endpoint accepts `keys=` as a
43
+ * filter so the key is a stable, human-meaningful identifier that agents
44
+ * actually paste — much more useful than the numeric id for spaces. Keys are
45
+ * preserved verbatim (case + punctuation) because Confluence treats them as
46
+ * opaque strings; we only percent-encode for path safety.
47
+ */
48
+ export declare function confluenceSpaceByKeyAliasPath(spaceKey: string): string;
49
+ /**
50
+ * `by-parent/<parentId>/<pageId>.json` mirrors `by-state` but pivots on the
51
+ * page's parent — the most natural Confluence navigation primitive after the
52
+ * space tree. Pages without a parentId (top-level pages directly under a
53
+ * space's homepage) are not emitted here; consumers should use the canonical
54
+ * space-scoped path instead.
55
+ */
56
+ export declare function confluencePageByParentAliasPath(parentId: string, pageId: string): string;
57
+ /**
58
+ * `by-space/<spaceId>/<pageId>.json` — flat alias keyed only on the space id
59
+ * so an agent can iterate every page in a space without resolving titles.
60
+ * The space-scoped canonical path `/confluence/spaces/<spaceId>/pages/<slug>__<id>.json`
61
+ * is still the human-friendly entry point; this alias is the deterministic
62
+ * lookup variant readers reach for with `ls`.
63
+ */
64
+ export declare function confluencePageBySpaceAliasPath(spaceId: string, pageId: string): string;
7
65
  export declare function computeConfluencePath(objectType: string, objectId: string, options?: {
8
66
  title?: string;
9
67
  spaceId?: string;
10
68
  }): string;
69
+ /**
70
+ * Decode a Confluence path segment back to its raw identifier. Supports both
71
+ * the v2 `<slug>__<id>` convention (post-PR) and the legacy `<slug>--<id>`
72
+ * convention so existing mounts written before the cutover keep resolving.
73
+ */
11
74
  export declare function extractConfluenceIdFromPathSegment(segment: string): string;
12
75
  //# sourceMappingURL=path-mapper.d.ts.map