@knpkv/confluence-to-markdown 0.6.0 → 0.7.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.
- package/CHANGELOG.md +39 -0
- package/LICENSE +21 -0
- package/README.md +22 -13
- package/dist/AdfPlaceholders.d.ts +42 -0
- package/dist/AdfPlaceholders.d.ts.map +1 -0
- package/dist/AdfPlaceholders.js +547 -0
- package/dist/AdfPlaceholders.js.map +1 -0
- package/dist/AdfSchemaValidator.d.ts +37 -0
- package/dist/AdfSchemaValidator.d.ts.map +1 -0
- package/dist/AdfSchemaValidator.js +37 -0
- package/dist/AdfSchemaValidator.js.map +1 -0
- package/dist/AdfWalker.d.ts +39 -0
- package/dist/AdfWalker.d.ts.map +1 -0
- package/dist/AdfWalker.js +527 -0
- package/dist/AdfWalker.js.map +1 -0
- package/dist/AtlaskitTransformers.d.ts +35 -0
- package/dist/AtlaskitTransformers.d.ts.map +1 -0
- package/dist/AtlaskitTransformers.js +48 -0
- package/dist/AtlaskitTransformers.js.map +1 -0
- package/dist/Brand.d.ts +6 -6
- package/dist/Brand.d.ts.map +1 -1
- package/dist/Brand.js +8 -6
- package/dist/Brand.js.map +1 -1
- package/dist/ConfluenceAuth.d.ts +4 -4
- package/dist/ConfluenceAuth.d.ts.map +1 -1
- package/dist/ConfluenceAuth.js +37 -39
- package/dist/ConfluenceAuth.js.map +1 -1
- package/dist/ConfluenceClient.d.ts +7 -17
- package/dist/ConfluenceClient.d.ts.map +1 -1
- package/dist/ConfluenceClient.js +81 -38
- package/dist/ConfluenceClient.js.map +1 -1
- package/dist/ConfluenceConfig.d.ts +3 -3
- package/dist/ConfluenceConfig.d.ts.map +1 -1
- package/dist/ConfluenceConfig.js +13 -11
- package/dist/ConfluenceConfig.js.map +1 -1
- package/dist/ConfluenceError.d.ts +68 -16
- package/dist/ConfluenceError.d.ts.map +1 -1
- package/dist/ConfluenceError.js +30 -1
- package/dist/ConfluenceError.js.map +1 -1
- package/dist/GitError.d.ts +5 -5
- package/dist/GitService.d.ts +11 -3
- package/dist/GitService.d.ts.map +1 -1
- package/dist/GitService.js +22 -27
- package/dist/GitService.js.map +1 -1
- package/dist/LocalFileSystem.d.ts +3 -3
- package/dist/LocalFileSystem.d.ts.map +1 -1
- package/dist/LocalFileSystem.js +6 -6
- package/dist/LocalFileSystem.js.map +1 -1
- package/dist/MarkdownConverter.d.ts +16 -65
- package/dist/MarkdownConverter.d.ts.map +1 -1
- package/dist/MarkdownConverter.js +64 -85
- package/dist/MarkdownConverter.js.map +1 -1
- package/dist/Schemas.d.ts +128 -141
- package/dist/Schemas.d.ts.map +1 -1
- package/dist/Schemas.js +21 -23
- package/dist/Schemas.js.map +1 -1
- package/dist/SyncEngine.d.ts +8 -5
- package/dist/SyncEngine.d.ts.map +1 -1
- package/dist/SyncEngine.js +189 -113
- package/dist/SyncEngine.js.map +1 -1
- package/dist/bin.js +23 -35
- package/dist/bin.js.map +1 -1
- package/dist/commands/auth.d.ts +2 -14
- package/dist/commands/auth.d.ts.map +1 -1
- package/dist/commands/auth.js +11 -16
- package/dist/commands/auth.js.map +1 -1
- package/dist/commands/clone.d.ts +4 -6
- package/dist/commands/clone.d.ts.map +1 -1
- package/dist/commands/clone.js +34 -32
- package/dist/commands/clone.js.map +1 -1
- package/dist/commands/delete.d.ts +2 -10
- package/dist/commands/delete.d.ts.map +1 -1
- package/dist/commands/delete.js +5 -4
- package/dist/commands/delete.js.map +1 -1
- package/dist/commands/errorHandler.d.ts +2 -1
- package/dist/commands/errorHandler.d.ts.map +1 -1
- package/dist/commands/errorHandler.js +22 -15
- package/dist/commands/errorHandler.js.map +1 -1
- package/dist/commands/fetch.d.ts +27 -0
- package/dist/commands/fetch.d.ts.map +1 -0
- package/dist/commands/fetch.js +48 -0
- package/dist/commands/fetch.js.map +1 -0
- package/dist/commands/git.d.ts +7 -10
- package/dist/commands/git.d.ts.map +1 -1
- package/dist/commands/git.js +6 -6
- package/dist/commands/git.js.map +1 -1
- package/dist/commands/index.d.ts +1 -0
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +1 -0
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/layers.d.ts +10 -9
- package/dist/commands/layers.d.ts.map +1 -1
- package/dist/commands/layers.js +41 -30
- package/dist/commands/layers.js.map +1 -1
- package/dist/commands/new.d.ts +2 -6
- package/dist/commands/new.d.ts.map +1 -1
- package/dist/commands/new.js +5 -4
- package/dist/commands/new.js.map +1 -1
- package/dist/commands/pageInput.d.ts +19 -0
- package/dist/commands/pageInput.d.ts.map +1 -0
- package/dist/commands/pageInput.js +68 -0
- package/dist/commands/pageInput.js.map +1 -0
- package/dist/commands/root.d.ts +8 -0
- package/dist/commands/root.d.ts.map +1 -0
- package/dist/commands/root.js +29 -0
- package/dist/commands/root.js.map +1 -0
- package/dist/commands/sync.d.ts +6 -9
- package/dist/commands/sync.d.ts.map +1 -1
- package/dist/commands/sync.js +5 -6
- package/dist/commands/sync.js.map +1 -1
- package/dist/index.d.ts +3 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -13
- package/dist/index.js.map +1 -1
- package/dist/internal/NodeLayers.d.ts.map +1 -1
- package/dist/internal/NodeLayers.js +1 -2
- package/dist/internal/NodeLayers.js.map +1 -1
- package/dist/internal/adfMetadata.d.ts +30 -0
- package/dist/internal/adfMetadata.d.ts.map +1 -0
- package/dist/internal/adfMetadata.js +126 -0
- package/dist/internal/adfMetadata.js.map +1 -0
- package/dist/internal/cleanMarkdown.d.ts +5 -0
- package/dist/internal/cleanMarkdown.d.ts.map +1 -0
- package/dist/internal/cleanMarkdown.js +13 -0
- package/dist/internal/cleanMarkdown.js.map +1 -0
- package/dist/internal/frontmatter.d.ts.map +1 -1
- package/dist/internal/frontmatter.js +41 -8
- package/dist/internal/frontmatter.js.map +1 -1
- package/dist/internal/gitCommands.d.ts +9 -3
- package/dist/internal/gitCommands.d.ts.map +1 -1
- package/dist/internal/gitCommands.js +18 -9
- package/dist/internal/gitCommands.js.map +1 -1
- package/dist/internal/hashUtils.d.ts +1 -1
- package/dist/internal/hashUtils.d.ts.map +1 -1
- package/dist/internal/hashUtils.js +1 -1
- package/dist/internal/hashUtils.js.map +1 -1
- package/dist/internal/oauthServer.d.ts +10 -5
- package/dist/internal/oauthServer.d.ts.map +1 -1
- package/dist/internal/oauthServer.js +19 -40
- package/dist/internal/oauthServer.js.map +1 -1
- package/dist/internal/pathUtils.d.ts +1 -1
- package/dist/internal/pathUtils.d.ts.map +1 -1
- package/dist/internal/pathUtils.js +1 -1
- package/dist/internal/pathUtils.js.map +1 -1
- package/dist/internal/process.d.ts +15 -0
- package/dist/internal/process.d.ts.map +1 -0
- package/dist/internal/process.js +10 -0
- package/dist/internal/process.js.map +1 -0
- package/dist/internal/stdio.d.ts +6 -0
- package/dist/internal/stdio.d.ts.map +1 -0
- package/dist/internal/stdio.js +15 -0
- package/dist/internal/stdio.js.map +1 -0
- package/dist/internal/tokenStorage.d.ts +3 -13
- package/dist/internal/tokenStorage.d.ts.map +1 -1
- package/dist/internal/tokenStorage.js +26 -24
- package/dist/internal/tokenStorage.js.map +1 -1
- package/dist/internal/userCache.d.ts +1 -1
- package/dist/internal/userCache.d.ts.map +1 -1
- package/dist/internal/userCache.js +1 -1
- package/dist/internal/userCache.js.map +1 -1
- package/package.json +30 -30
- package/skills/confluence/SKILL.md +143 -0
- package/skills/confluence/agents/openai.yaml +4 -0
- package/src/AdfPlaceholders.ts +310 -13
- package/src/AdfSchemaValidator.ts +2 -4
- package/src/AdfWalker.ts +122 -42
- package/src/AtlaskitTransformers.ts +2 -4
- package/src/Brand.ts +11 -16
- package/src/ConfluenceAuth.ts +22 -30
- package/src/ConfluenceClient.ts +24 -20
- package/src/ConfluenceConfig.ts +14 -14
- package/src/GitService.ts +39 -49
- package/src/LocalFileSystem.ts +7 -9
- package/src/MarkdownConverter.ts +2 -4
- package/src/Schemas.ts +13 -12
- package/src/SyncEngine.ts +151 -53
- package/src/bin.ts +30 -56
- package/src/commands/auth.ts +21 -18
- package/src/commands/clone.ts +38 -37
- package/src/commands/delete.ts +5 -4
- package/src/commands/errorHandler.ts +25 -18
- package/src/commands/fetch.ts +90 -0
- package/src/commands/git.ts +6 -6
- package/src/commands/index.ts +1 -0
- package/src/commands/layers.ts +53 -33
- package/src/commands/new.ts +5 -4
- package/src/commands/pageInput.ts +103 -0
- package/src/commands/root.ts +59 -0
- package/src/commands/sync.ts +7 -6
- package/src/internal/NodeLayers.ts +1 -2
- package/src/internal/adfMetadata.ts +145 -0
- package/src/internal/cleanMarkdown.ts +15 -0
- package/src/internal/frontmatter.ts +45 -8
- package/src/internal/gitCommands.ts +23 -17
- package/src/internal/hashUtils.ts +2 -2
- package/src/internal/oauthServer.ts +84 -105
- package/src/internal/pathUtils.ts +1 -1
- package/src/internal/process.ts +15 -0
- package/src/internal/stdio.ts +22 -0
- package/src/internal/tokenStorage.ts +39 -29
- package/src/internal/userCache.ts +2 -2
- package/test/AdfPlaceholders.test.ts +213 -0
- package/test/AdfSchemaValidator.test.ts +6 -6
- package/test/AdfWalker.test.ts +167 -21
- package/test/AtlaskitTransformers.test.ts +4 -4
- package/test/Brand.test.ts +11 -11
- package/test/GitService.test.ts +6 -2
- package/test/MarkdownConverter.test.ts +12 -11
- package/test/RoundTrip.test.ts +258 -3
- package/test/Schemas.test.ts +40 -40
- package/test/adfMetadata.test.ts +110 -0
- package/test/cleanMarkdown.test.ts +36 -0
- package/test/commandHarness.test.ts +79 -0
- package/test/commandHarness.ts +147 -0
- package/test/fetch.test.ts +61 -0
- package/test/frontmatter.test.ts +41 -0
- package/test/integration.test.ts +569 -156
- package/test/layers.test.ts +12 -0
- package/test/oauthServer.test.ts +4 -5
- package/test/pageInput.test.ts +83 -0
- package/test/tokenStorage.test.ts +17 -17
- package/dist/SchemaConverterError.d.ts +0 -108
- package/dist/SchemaConverterError.d.ts.map +0 -1
- package/dist/SchemaConverterError.js +0 -84
- package/dist/SchemaConverterError.js.map +0 -1
- package/dist/ast/BlockNode.d.ts +0 -468
- package/dist/ast/BlockNode.d.ts.map +0 -1
- package/dist/ast/BlockNode.js +0 -319
- package/dist/ast/BlockNode.js.map +0 -1
- package/dist/ast/Document.d.ts +0 -244
- package/dist/ast/Document.d.ts.map +0 -1
- package/dist/ast/Document.js +0 -69
- package/dist/ast/Document.js.map +0 -1
- package/dist/ast/InlineNode.d.ts +0 -477
- package/dist/ast/InlineNode.d.ts.map +0 -1
- package/dist/ast/InlineNode.js +0 -263
- package/dist/ast/InlineNode.js.map +0 -1
- package/dist/ast/MacroNode.d.ts +0 -267
- package/dist/ast/MacroNode.d.ts.map +0 -1
- package/dist/ast/MacroNode.js +0 -164
- package/dist/ast/MacroNode.js.map +0 -1
- package/dist/ast/index.d.ts +0 -10
- package/dist/ast/index.d.ts.map +0 -1
- package/dist/ast/index.js +0 -14
- package/dist/ast/index.js.map +0 -1
- package/dist/parsers/ConfluenceParser.d.ts +0 -26
- package/dist/parsers/ConfluenceParser.d.ts.map +0 -1
- package/dist/parsers/ConfluenceParser.js +0 -792
- package/dist/parsers/ConfluenceParser.js.map +0 -1
- package/dist/parsers/MarkdownParser.d.ts +0 -26
- package/dist/parsers/MarkdownParser.d.ts.map +0 -1
- package/dist/parsers/MarkdownParser.js +0 -873
- package/dist/parsers/MarkdownParser.js.map +0 -1
- package/dist/parsers/index.d.ts +0 -8
- package/dist/parsers/index.d.ts.map +0 -1
- package/dist/parsers/index.js +0 -8
- package/dist/parsers/index.js.map +0 -1
- package/dist/parsers/preprocessing/ConfluencePreprocessing.d.ts +0 -23
- package/dist/parsers/preprocessing/ConfluencePreprocessing.d.ts.map +0 -1
- package/dist/parsers/preprocessing/ConfluencePreprocessing.js +0 -323
- package/dist/parsers/preprocessing/ConfluencePreprocessing.js.map +0 -1
- package/dist/parsers/preprocessing/index.d.ts +0 -7
- package/dist/parsers/preprocessing/index.d.ts.map +0 -1
- package/dist/parsers/preprocessing/index.js +0 -7
- package/dist/parsers/preprocessing/index.js.map +0 -1
- package/dist/schemas/ConfluenceSchema.d.ts +0 -21
- package/dist/schemas/ConfluenceSchema.d.ts.map +0 -1
- package/dist/schemas/ConfluenceSchema.js +0 -38
- package/dist/schemas/ConfluenceSchema.js.map +0 -1
- package/dist/schemas/ConversionSchema.d.ts +0 -35
- package/dist/schemas/ConversionSchema.d.ts.map +0 -1
- package/dist/schemas/ConversionSchema.js +0 -208
- package/dist/schemas/ConversionSchema.js.map +0 -1
- package/dist/schemas/MarkdownSchema.d.ts +0 -21
- package/dist/schemas/MarkdownSchema.d.ts.map +0 -1
- package/dist/schemas/MarkdownSchema.js +0 -38
- package/dist/schemas/MarkdownSchema.js.map +0 -1
- package/dist/schemas/hast/HastFromHtml.d.ts +0 -27
- package/dist/schemas/hast/HastFromHtml.d.ts.map +0 -1
- package/dist/schemas/hast/HastFromHtml.js +0 -107
- package/dist/schemas/hast/HastFromHtml.js.map +0 -1
- package/dist/schemas/hast/HastSchema.d.ts +0 -195
- package/dist/schemas/hast/HastSchema.d.ts.map +0 -1
- package/dist/schemas/hast/HastSchema.js +0 -183
- package/dist/schemas/hast/HastSchema.js.map +0 -1
- package/dist/schemas/hast/index.d.ts +0 -9
- package/dist/schemas/hast/index.d.ts.map +0 -1
- package/dist/schemas/hast/index.js +0 -3
- package/dist/schemas/hast/index.js.map +0 -1
- package/dist/schemas/index.d.ts +0 -14
- package/dist/schemas/index.d.ts.map +0 -1
- package/dist/schemas/index.js +0 -16
- package/dist/schemas/index.js.map +0 -1
- package/dist/schemas/mdast/MdastFromMarkdown.d.ts +0 -30
- package/dist/schemas/mdast/MdastFromMarkdown.d.ts.map +0 -1
- package/dist/schemas/mdast/MdastFromMarkdown.js +0 -79
- package/dist/schemas/mdast/MdastFromMarkdown.js.map +0 -1
- package/dist/schemas/mdast/MdastSchema.d.ts +0 -385
- package/dist/schemas/mdast/MdastSchema.d.ts.map +0 -1
- package/dist/schemas/mdast/MdastSchema.js +0 -266
- package/dist/schemas/mdast/MdastSchema.js.map +0 -1
- package/dist/schemas/mdast/index.d.ts +0 -10
- package/dist/schemas/mdast/index.d.ts.map +0 -1
- package/dist/schemas/mdast/index.js +0 -4
- package/dist/schemas/mdast/index.js.map +0 -1
- package/dist/schemas/mdast/mdastToString.d.ts +0 -13
- package/dist/schemas/mdast/mdastToString.d.ts.map +0 -1
- package/dist/schemas/mdast/mdastToString.js +0 -85
- package/dist/schemas/mdast/mdastToString.js.map +0 -1
- package/dist/schemas/nodes/block/BlockSchema.d.ts +0 -43
- package/dist/schemas/nodes/block/BlockSchema.d.ts.map +0 -1
- package/dist/schemas/nodes/block/BlockSchema.js +0 -634
- package/dist/schemas/nodes/block/BlockSchema.js.map +0 -1
- package/dist/schemas/nodes/block/index.d.ts +0 -7
- package/dist/schemas/nodes/block/index.d.ts.map +0 -1
- package/dist/schemas/nodes/block/index.js +0 -7
- package/dist/schemas/nodes/block/index.js.map +0 -1
- package/dist/schemas/nodes/index.d.ts +0 -9
- package/dist/schemas/nodes/index.d.ts.map +0 -1
- package/dist/schemas/nodes/index.js +0 -12
- package/dist/schemas/nodes/index.js.map +0 -1
- package/dist/schemas/nodes/inline/InlineSchema.d.ts +0 -48
- package/dist/schemas/nodes/inline/InlineSchema.d.ts.map +0 -1
- package/dist/schemas/nodes/inline/InlineSchema.js +0 -436
- package/dist/schemas/nodes/inline/InlineSchema.js.map +0 -1
- package/dist/schemas/nodes/inline/index.d.ts +0 -7
- package/dist/schemas/nodes/inline/index.d.ts.map +0 -1
- package/dist/schemas/nodes/inline/index.js +0 -7
- package/dist/schemas/nodes/inline/index.js.map +0 -1
- package/dist/schemas/nodes/macro/MacroSchema.d.ts +0 -27
- package/dist/schemas/nodes/macro/MacroSchema.d.ts.map +0 -1
- package/dist/schemas/nodes/macro/MacroSchema.js +0 -162
- package/dist/schemas/nodes/macro/MacroSchema.js.map +0 -1
- package/dist/schemas/nodes/macro/index.d.ts +0 -7
- package/dist/schemas/nodes/macro/index.d.ts.map +0 -1
- package/dist/schemas/nodes/macro/index.js +0 -7
- package/dist/schemas/nodes/macro/index.js.map +0 -1
- package/dist/schemas/preprocessing/ConfluencePreprocessor.d.ts +0 -53
- package/dist/schemas/preprocessing/ConfluencePreprocessor.d.ts.map +0 -1
- package/dist/schemas/preprocessing/ConfluencePreprocessor.js +0 -349
- package/dist/schemas/preprocessing/ConfluencePreprocessor.js.map +0 -1
- package/dist/schemas/preprocessing/index.d.ts +0 -8
- package/dist/schemas/preprocessing/index.d.ts.map +0 -1
- package/dist/schemas/preprocessing/index.js +0 -2
- package/dist/schemas/preprocessing/index.js.map +0 -1
- package/dist/serializers/ConfluenceSerializer.d.ts +0 -30
- package/dist/serializers/ConfluenceSerializer.d.ts.map +0 -1
- package/dist/serializers/ConfluenceSerializer.js +0 -551
- package/dist/serializers/ConfluenceSerializer.js.map +0 -1
- package/dist/serializers/MarkdownSerializer.d.ts +0 -34
- package/dist/serializers/MarkdownSerializer.d.ts.map +0 -1
- package/dist/serializers/MarkdownSerializer.js +0 -355
- package/dist/serializers/MarkdownSerializer.js.map +0 -1
- package/dist/serializers/index.d.ts +0 -8
- package/dist/serializers/index.d.ts.map +0 -1
- package/dist/serializers/index.js +0 -8
- package/dist/serializers/index.js.map +0 -1
|
@@ -3,32 +3,42 @@
|
|
|
3
3
|
*
|
|
4
4
|
* @module
|
|
5
5
|
*/
|
|
6
|
-
import * as
|
|
7
|
-
import * as Path from "@effect/platform/Path";
|
|
6
|
+
import * as Config from "effect/Config";
|
|
8
7
|
import * as Context from "effect/Context";
|
|
9
8
|
import * as Effect from "effect/Effect";
|
|
9
|
+
import * as FileSystem from "effect/FileSystem";
|
|
10
10
|
import * as Layer from "effect/Layer";
|
|
11
|
+
import * as Path from "effect/Path";
|
|
11
12
|
import * as Schema from "effect/Schema";
|
|
12
13
|
import { FileSystemError } from "../ConfluenceError.js";
|
|
13
14
|
import { OAuthConfigSchema, OAuthTokenSchema } from "../Schemas.js";
|
|
14
15
|
const TOKEN_DIR_NAME = ".confluence";
|
|
15
16
|
const TOKEN_FILE_NAME = "auth.json";
|
|
16
17
|
const CONFIG_FILE_NAME = "config.json";
|
|
18
|
+
const parseJsonOrNull = (content) => {
|
|
19
|
+
try {
|
|
20
|
+
return JSON.parse(content);
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
};
|
|
17
26
|
/**
|
|
18
27
|
* Tag for the HomeDirectory service.
|
|
19
28
|
*
|
|
20
29
|
* @category Services
|
|
21
30
|
*/
|
|
22
|
-
export class HomeDirectoryTag extends Context.
|
|
31
|
+
export class HomeDirectoryTag extends Context.Service()("@knpkv/confluence-to-markdown/HomeDirectory") {
|
|
23
32
|
}
|
|
24
33
|
/**
|
|
25
|
-
* Default implementation using
|
|
34
|
+
* Default implementation using Effect Config.
|
|
26
35
|
*
|
|
27
36
|
* @category Layers
|
|
28
37
|
*/
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
38
|
+
const homeDirectoryPath = Config.string("HOME").pipe(Config.orElse(() => Config.string("USERPROFILE")), Config.orElse(() => Config.succeed("/")));
|
|
39
|
+
export const HomeDirectoryLive = Layer.effect(HomeDirectoryTag, homeDirectoryPath.pipe(Effect.catchCause(() => Effect.succeed("/")), Effect.map((home) => HomeDirectoryTag.of({
|
|
40
|
+
get: () => Effect.succeed(home)
|
|
41
|
+
}))));
|
|
32
42
|
/**
|
|
33
43
|
* Get the token directory path.
|
|
34
44
|
*/
|
|
@@ -64,19 +74,15 @@ const getConfigPath = () => Effect.gen(function* () {
|
|
|
64
74
|
export const loadToken = () => Effect.gen(function* () {
|
|
65
75
|
const fs = yield* FileSystem.FileSystem;
|
|
66
76
|
const tokenPath = yield* getTokenPath();
|
|
67
|
-
const exists = yield* fs.exists(tokenPath).pipe(Effect.
|
|
77
|
+
const exists = yield* fs.exists(tokenPath).pipe(Effect.catchCause(() => Effect.succeed(false)));
|
|
68
78
|
if (!exists) {
|
|
69
79
|
return null;
|
|
70
80
|
}
|
|
71
81
|
const content = yield* fs.readFileString(tokenPath).pipe(Effect.mapError((cause) => new FileSystemError({ operation: "read", path: tokenPath, cause })));
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
parsed = JSON.parse(content);
|
|
75
|
-
}
|
|
76
|
-
catch {
|
|
82
|
+
const parsed = yield* Effect.sync(() => parseJsonOrNull(content));
|
|
83
|
+
if (parsed === null)
|
|
77
84
|
return null;
|
|
78
|
-
|
|
79
|
-
const decoded = yield* Schema.decodeUnknown(OAuthTokenSchema)(parsed).pipe(Effect.catchAll(() => Effect.succeed(null)));
|
|
85
|
+
const decoded = yield* Schema.decodeUnknownEffect(OAuthTokenSchema)(parsed).pipe(Effect.catchCause(() => Effect.succeed(null)));
|
|
80
86
|
return decoded;
|
|
81
87
|
});
|
|
82
88
|
/**
|
|
@@ -103,7 +109,7 @@ export const saveToken = (token) => Effect.gen(function* () {
|
|
|
103
109
|
export const deleteToken = () => Effect.gen(function* () {
|
|
104
110
|
const fs = yield* FileSystem.FileSystem;
|
|
105
111
|
const tokenPath = yield* getTokenPath();
|
|
106
|
-
yield* fs.remove(tokenPath).pipe(Effect.
|
|
112
|
+
yield* fs.remove(tokenPath).pipe(Effect.catchCause(() => Effect.void));
|
|
107
113
|
});
|
|
108
114
|
/**
|
|
109
115
|
* Load OAuth client configuration from disk.
|
|
@@ -115,19 +121,15 @@ export const deleteToken = () => Effect.gen(function* () {
|
|
|
115
121
|
export const loadOAuthConfig = () => Effect.gen(function* () {
|
|
116
122
|
const fs = yield* FileSystem.FileSystem;
|
|
117
123
|
const configPath = yield* getConfigPath();
|
|
118
|
-
const exists = yield* fs.exists(configPath).pipe(Effect.
|
|
124
|
+
const exists = yield* fs.exists(configPath).pipe(Effect.catchCause(() => Effect.succeed(false)));
|
|
119
125
|
if (!exists) {
|
|
120
126
|
return null;
|
|
121
127
|
}
|
|
122
128
|
const content = yield* fs.readFileString(configPath).pipe(Effect.mapError((cause) => new FileSystemError({ operation: "read", path: configPath, cause })));
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
parsed = JSON.parse(content);
|
|
126
|
-
}
|
|
127
|
-
catch {
|
|
129
|
+
const parsed = yield* Effect.sync(() => parseJsonOrNull(content));
|
|
130
|
+
if (parsed === null)
|
|
128
131
|
return null;
|
|
129
|
-
|
|
130
|
-
const decoded = yield* Schema.decodeUnknown(OAuthConfigSchema)(parsed).pipe(Effect.catchAll(() => Effect.succeed(null)));
|
|
132
|
+
const decoded = yield* Schema.decodeUnknownEffect(OAuthConfigSchema)(parsed).pipe(Effect.catchCause(() => Effect.succeed(null)));
|
|
131
133
|
return decoded;
|
|
132
134
|
});
|
|
133
135
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokenStorage.js","sourceRoot":"","sources":["../../src/internal/tokenStorage.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"tokenStorage.js","sourceRoot":"","sources":["../../src/internal/tokenStorage.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@ import * as Context from "effect/Context";
|
|
|
7
7
|
import * as Effect from "effect/Effect";
|
|
8
8
|
import * as Layer from "effect/Layer";
|
|
9
9
|
import type { AtlassianUser } from "../Schemas.js";
|
|
10
|
-
declare const UserCache_base: Context.
|
|
10
|
+
declare const UserCache_base: Context.ServiceClass<UserCache, "@knpkv/confluence-to-markdown/UserCache", {
|
|
11
11
|
/**
|
|
12
12
|
* Get user from cache, or fetch and cache if not present.
|
|
13
13
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"userCache.d.ts","sourceRoot":"","sources":["../../src/internal/userCache.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAErC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;;IAU9C;;OAEG;yBACkB,CACnB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,OAAO,CAAC,KAChE,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,OAAO,CAAC;IAE1C;;OAEG;kBACW,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,aAAa,GAAG,SAAS,CAAC;IAE7E;;OAEG;kBACW,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;IAE7E;;OAEG;oBACa,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;;AA7B7C;;;;GAIG;AACH,qBAAa,SAAU,SAAQ,
|
|
1
|
+
{"version":3,"file":"userCache.d.ts","sourceRoot":"","sources":["../../src/internal/userCache.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAErC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;;IAU9C;;OAEG;yBACkB,CACnB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,OAAO,CAAC,KAChE,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,OAAO,CAAC;IAE1C;;OAEG;kBACW,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,aAAa,GAAG,SAAS,CAAC;IAE7E;;OAEG;kBACW,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;IAE7E;;OAEG;oBACa,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;;AA7B7C;;;;GAIG;AACH,qBAAa,SAAU,SAAQ,cA0Be;CAAG;AA0CjD;;;;GAIG;AACH,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,KAAK,CAAC,SAAS,CAAiC,CAAA"}
|
|
@@ -12,7 +12,7 @@ import * as Ref from "effect/Ref";
|
|
|
12
12
|
*
|
|
13
13
|
* @category Cache
|
|
14
14
|
*/
|
|
15
|
-
export class UserCache extends Context.
|
|
15
|
+
export class UserCache extends Context.Service()("@knpkv/confluence-to-markdown/UserCache") {
|
|
16
16
|
}
|
|
17
17
|
/**
|
|
18
18
|
* Create the user cache service.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"userCache.js","sourceRoot":"","sources":["../../src/internal/userCache.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,GAAG,MAAM,YAAY,CAAA;AAGjC;;;;GAIG;AACH,MAAM,OAAO,SAAU,SAAQ,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"userCache.js","sourceRoot":"","sources":["../../src/internal/userCache.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,GAAG,MAAM,YAAY,CAAA;AAGjC;;;;GAIG;AACH,MAAM,OAAO,SAAU,SAAQ,OAAO,CAAC,OAAO,EA0B3C,CAAC,yCAAyC,CAAC;CAAG;AAEjD;;GAEG;AACH,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAC/B,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAA6B,IAAI,GAAG,EAAE,CAAC,CAAA;IAEpE,MAAM,GAAG,GAAG,CAAC,SAAiB,EAA4C,EAAE,CAC1E,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;IAE1D,MAAM,GAAG,GAAG,CAAC,SAAiB,EAAE,IAAmB,EAAuB,EAAE,CAC1E,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE;QACtB,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAA;QACzB,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;QAC3B,OAAO,MAAM,CAAA;IACf,CAAC,CAAC,CAAA;IAEJ,MAAM,UAAU,GAAG,CACjB,SAAiB,EACjB,KAA6D,EAC5B,EAAE,CACnC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;QACpC,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,MAAM,CAAA;QACf,CAAC;QACD,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;QACpC,KAAK,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;QAC3B,OAAO,IAAI,CAAA;IACb,CAAC,CAAC,CAAA;IAEJ,MAAM,KAAK,GAAG,GAAwB,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,GAAG,EAAE,CAAC,CAAA;IAElE,OAAO,SAAS,CAAC,EAAE,CAAC;QAClB,UAAU;QACV,GAAG;QACH,GAAG;QACH,KAAK;KACN,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAA2B,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@knpkv/confluence-to-markdown",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.0",
|
|
4
4
|
"description": "Sync Confluence Cloud pages to local GitHub Flavored Markdown files",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "knpkv",
|
|
7
7
|
"repository": {
|
|
8
8
|
"type": "git",
|
|
9
|
-
"url": "
|
|
9
|
+
"url": "https://github.com/knpkv/npm.git",
|
|
10
10
|
"directory": "packages/confluence-to-markdown"
|
|
11
11
|
},
|
|
12
12
|
"bugs": {
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
"main": "./dist/index.js",
|
|
19
19
|
"types": "./dist/index.d.ts",
|
|
20
20
|
"bin": {
|
|
21
|
-
"confluence": "dist/bin.js"
|
|
21
|
+
"confluence": "./dist/bin.js"
|
|
22
22
|
},
|
|
23
23
|
"exports": {
|
|
24
24
|
".": {
|
|
@@ -85,38 +85,27 @@
|
|
|
85
85
|
"publishConfig": {
|
|
86
86
|
"access": "public"
|
|
87
87
|
},
|
|
88
|
-
"scripts": {
|
|
89
|
-
"build": "tsc",
|
|
90
|
-
"clean": "rimraf dist dist-test .tsbuildinfo",
|
|
91
|
-
"test": "vitest run",
|
|
92
|
-
"test:watch": "vitest",
|
|
93
|
-
"test:integration": "vitest run --config vitest.config.integration.ts",
|
|
94
|
-
"lint": "eslint src",
|
|
95
|
-
"lint:fix": "eslint src --fix",
|
|
96
|
-
"check": "tsc --noEmit",
|
|
97
|
-
"link": "npm link"
|
|
98
|
-
},
|
|
99
88
|
"peerDependencies": {
|
|
100
|
-
"effect": "
|
|
89
|
+
"effect": "4.0.0-beta.87"
|
|
101
90
|
},
|
|
102
91
|
"dependencies": {
|
|
103
|
-
"@atlaskit/adf-schema": "^
|
|
104
|
-
"@atlaskit/editor-json-transformer": "^
|
|
105
|
-
"@atlaskit/editor-markdown-transformer": "^
|
|
106
|
-
"@effect/
|
|
107
|
-
"@effect/platform": "latest",
|
|
108
|
-
"@effect/platform-node": "latest",
|
|
109
|
-
"@knpkv/confluence-api-client": "workspace:^",
|
|
92
|
+
"@atlaskit/adf-schema": "^56.0.4",
|
|
93
|
+
"@atlaskit/editor-json-transformer": "^9.0.1",
|
|
94
|
+
"@atlaskit/editor-markdown-transformer": "^6.0.1",
|
|
95
|
+
"@effect/platform-node": "4.0.0-beta.87",
|
|
110
96
|
"ajv": "^8.20.0",
|
|
111
97
|
"ajv-draft-04": "^1.0.0",
|
|
112
|
-
"
|
|
98
|
+
"js-yaml": "^4.2.0",
|
|
99
|
+
"@knpkv/agent-skills": "^0.2.0",
|
|
100
|
+
"@knpkv/confluence-api-client": "^0.3.0"
|
|
113
101
|
},
|
|
114
102
|
"devDependencies": {
|
|
115
|
-
"@effect/vitest": "
|
|
116
|
-
"@types/
|
|
117
|
-
"
|
|
118
|
-
"
|
|
119
|
-
"
|
|
103
|
+
"@effect/vitest": "4.0.0-beta.87",
|
|
104
|
+
"@types/js-yaml": "^4.0.9",
|
|
105
|
+
"@types/node": "^26.0.0",
|
|
106
|
+
"effect": "4.0.0-beta.87",
|
|
107
|
+
"typescript": "~6.0.3",
|
|
108
|
+
"vitest": "^4.1.9"
|
|
120
109
|
},
|
|
121
110
|
"keywords": [
|
|
122
111
|
"effect",
|
|
@@ -129,5 +118,16 @@
|
|
|
129
118
|
"cli",
|
|
130
119
|
"git",
|
|
131
120
|
"version-control"
|
|
132
|
-
]
|
|
133
|
-
|
|
121
|
+
],
|
|
122
|
+
"scripts": {
|
|
123
|
+
"build": "tsc",
|
|
124
|
+
"clean": "rimraf dist dist-test .tsbuildinfo",
|
|
125
|
+
"test": "vitest run",
|
|
126
|
+
"test:watch": "vitest",
|
|
127
|
+
"test:integration": "vitest run --config vitest.config.integration.ts",
|
|
128
|
+
"lint": "eslint src",
|
|
129
|
+
"lint:fix": "eslint src --fix",
|
|
130
|
+
"check": "tsc --noEmit",
|
|
131
|
+
"link": "npm link"
|
|
132
|
+
}
|
|
133
|
+
}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: confluence
|
|
3
|
+
description: Use the @knpkv/confluence-to-markdown CLI to clone, fetch, sync, edit, commit, diff, and push Confluence Cloud pages as local GitHub Flavored Markdown. Trigger when the user asks an agent to manage Confluence documentation, inspect local Confluence sync status, create or delete pages, pull remote updates, export a page as markdown, or publish markdown changes back to Confluence.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Confluence
|
|
7
|
+
|
|
8
|
+
Use the `confluence` binary to manage a local markdown mirror of Confluence Cloud pages.
|
|
9
|
+
|
|
10
|
+
## Preconditions
|
|
11
|
+
|
|
12
|
+
- Run commands from the workspace that contains, or should contain, the `.confluence/` sync directory.
|
|
13
|
+
- Authenticate before clone or sync with `confluence auth create`, `confluence auth configure`, and `confluence auth login`.
|
|
14
|
+
- Use OAuth for normal operation. API-token env vars may be available as `CONFLUENCE_API_KEY` and `CONFLUENCE_EMAIL`.
|
|
15
|
+
- Confirm before running `confluence push`, because it writes to Confluence.
|
|
16
|
+
- Confirm before running `confluence delete`, because it removes a local page that will be deleted remotely on the next push.
|
|
17
|
+
- Treat `confluence fetch --clean-markdown` output as read-only/export output. Do not push it back unless the user explicitly accepts metadata loss.
|
|
18
|
+
|
|
19
|
+
## Setup
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
confluence auth status
|
|
23
|
+
confluence auth create
|
|
24
|
+
confluence auth configure --client-id <id> --client-secret <secret>
|
|
25
|
+
confluence auth login
|
|
26
|
+
confluence auth login --site https://example.atlassian.net
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
Clone a page tree:
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
confluence clone --root-page-id <page-id> --base-url https://example.atlassian.net
|
|
33
|
+
confluence clone --url https://example.atlassian.net/wiki/spaces/SPACE/pages/<page-id>/Title
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
`clone` initializes `.confluence/`, creates local git history, and creates the `origin/confluence` tracking branch.
|
|
37
|
+
|
|
38
|
+
Fetch one latest page without creating a sync workspace:
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
confluence fetch --url https://example.atlassian.net/wiki/pages/<page-id>
|
|
42
|
+
confluence fetch --page-id <page-id> --base-url https://example.atlassian.net
|
|
43
|
+
confluence fetch --url https://example.atlassian.net/wiki/pages/<page-id> --clean-markdown
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Sync Workflow
|
|
47
|
+
|
|
48
|
+
Inspect before changing anything:
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
confluence status
|
|
52
|
+
confluence diff
|
|
53
|
+
confluence log --oneline
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
Pull remote changes:
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
confluence pull
|
|
60
|
+
confluence pull --force
|
|
61
|
+
confluence pull --replay-history
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Commit local markdown edits:
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
confluence diff
|
|
68
|
+
confluence commit --message "Update release notes"
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Preview and publish:
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
confluence push --dry-run
|
|
75
|
+
confluence push
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## Page Operations
|
|
79
|
+
|
|
80
|
+
Create a page interactively:
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
confluence new
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
Delete a page locally, then commit and push the deletion:
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
confluence delete
|
|
90
|
+
confluence commit --message "Delete obsolete page"
|
|
91
|
+
confluence push
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
## Element Fidelity
|
|
95
|
+
|
|
96
|
+
Confluence pages are stored as Atlassian Document Format (ADF). The CLI emits readable Markdown where possible and exact `<!-- adf:... -->` placeholders/sidecars where Markdown cannot represent the element safely.
|
|
97
|
+
|
|
98
|
+
Use this quick reference before editing complex pages. It names every ADF element class agents are likely to see in Confluence Cloud, including elements that are only partially supported or currently preserved as placeholders.
|
|
99
|
+
|
|
100
|
+
| Confluence / ADF element | Markdown behavior | Agent guidance |
|
|
101
|
+
| ------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
|
|
102
|
+
| Document root: `doc` | Container only | Do not create manually; it is rebuilt on push. |
|
|
103
|
+
| Text leaf: `text` | Native Markdown text | Safe to edit normally. |
|
|
104
|
+
| Hard breaks: `hardBreak` | Markdown hard break; `<br>` inside tables | Safe. |
|
|
105
|
+
| Paragraphs: `paragraph` | Native Markdown paragraph; paragraph marks use `adf:paragraph` wrappers | Keep wrappers when alignment or indentation is present. |
|
|
106
|
+
| Headings: `heading` | `#` through `######` | Safe to edit normally. |
|
|
107
|
+
| Rules: `rule` | `---` | Safe. |
|
|
108
|
+
| Block quotes: `blockquote` | Native Markdown blockquotes | Safe unless nested placeholder markers are present. |
|
|
109
|
+
| Code blocks: `codeBlock` | Fenced code blocks | Preserve language fences and fence length. |
|
|
110
|
+
| Inline code mark: `code` | Backticks | Safe. |
|
|
111
|
+
| Lists: `bulletList`, `orderedList`, `listItem` | Native Markdown lists | Safe unless list items contain tables, layouts, macros, or other placeholder-wrapped blocks. |
|
|
112
|
+
| Tables: `table`, `tableRow`, `tableHeader`, `tableCell` | GFM tables wrapped with `adf:table` metadata at block level | Avoid restructuring complex tables; merged cells, widths, and some table attrs may not be visible in Markdown. |
|
|
113
|
+
| Links: `link` mark | Native Markdown links | Keep href intact; link titles are preserved when available but may be easy to lose during hand edits. |
|
|
114
|
+
| Mentions: `mention` | `[@Name](confluence-mention://ACCOUNT_ID)` when account IDs are known | Keep the custom link target intact to preserve a real mention. |
|
|
115
|
+
| Status lozenges: `status` | Inline HTML status span | Edit label cautiously; keep status attributes intact. |
|
|
116
|
+
| Dates: `date` | Exact `adf:date` placeholder comments | Do not hand-edit unless intentionally replacing with plain text. |
|
|
117
|
+
| Emojis: `emoji` | Exact `adf:emoji` placeholder comments | Do not hand-edit unless intentionally replacing with plain text. |
|
|
118
|
+
| Panels: `panel` | Placeholder-wrapped content | Edit body text only; keep opening/closing `adf:panel` markers. |
|
|
119
|
+
| Tasks: `taskList`, `taskItem` | Task-list Markdown wrapped with exact ADF metadata | Keep markers/sidecars; state/localId metadata is not fully represented by Markdown. |
|
|
120
|
+
| Decisions: `decisionList`, `decisionItem` | Bullet-like visible text wrapped with exact ADF metadata | Keep markers/sidecars; do not convert to a plain list unless accepting metadata loss. |
|
|
121
|
+
| Expands: `expand`, `nestedExpand` | Visible title/body wrapped with exact ADF metadata | Keep markers paired; avoid moving only one side of the wrapper. |
|
|
122
|
+
| Layouts: `layoutSection`, `layoutColumn` | Visible column content wrapped with exact ADF metadata | Avoid manual reflow unless the user accepts layout loss. |
|
|
123
|
+
| Cards: `inlineCard`, `blockCard`, `embedCard` | URL cards when resolvable; otherwise unsupported/placeholder output | Do not delete `adf:*Card` refs unless replacing the card. |
|
|
124
|
+
| Media blocks: `mediaSingle`, `mediaGroup`, `media`, `caption` | Image Markdown when a URL exists; otherwise `adf:media` placeholder; captions as text | Warn that attachments and media metadata are not fully supported; captions may not round-trip structurally. |
|
|
125
|
+
| Inline media: `mediaInline` | `adf:media` placeholder | Treat as unsupported media; preserve the placeholder. |
|
|
126
|
+
| Macros/extensions: `extension`, `inlineExtension`, `bodiedExtension` | Native syntax for simple TOC; otherwise exact placeholder comments with sidecar metadata | Preserve macro markers. For TOC, `[[toc]]` and `[[toc:min=2,max=4]]` are supported; richer TOC attrs fall back to placeholders. |
|
|
127
|
+
| Text marks: `strong`, `em`, `strike` | Native Markdown | Safe. |
|
|
128
|
+
| Text marks: `underline`, `textColor`, `backgroundColor`, `subsup` | Inline HTML and/or placeholder metadata | Keep HTML/attrs intact for round-trip fidelity. |
|
|
129
|
+
| Paragraph marks: `alignment`, `indentation` | `adf:paragraph` wrapper metadata | Avoid removing wrapper markers. |
|
|
130
|
+
| Placeholders and Confluence editor-only nodes such as `placeholder` | Unsupported placeholder output if encountered | Stop and warn before editing; preserve any emitted marker/comment. |
|
|
131
|
+
| Unsupported wrappers: `unsupportedBlock`, `unsupportedInline`, `unsupportedFragment` | Unsupported placeholder output if encountered | Stop and warn before editing; these indicate content the CLI cannot faithfully express yet. |
|
|
132
|
+
| Unknown future ADF nodes or marks | `<!-- unsupported ADF ... -->` output or warning logs | Stop and warn the user before editing; fetch/pull logs may contain details. |
|
|
133
|
+
|
|
134
|
+
Clean fetch mode removes `adf:` comments from stdout for readability. It is useful for summaries, exports, and copying text, but it discards data needed for exact push round-trips.
|
|
135
|
+
|
|
136
|
+
## Agent Workflow
|
|
137
|
+
|
|
138
|
+
1. Start with `confluence status` and `confluence diff`.
|
|
139
|
+
2. Read and edit markdown files under the configured docs path, usually `.confluence/docs`.
|
|
140
|
+
3. Preserve `<!-- adf:... -->` markers, `.adf.json` sidecars, front matter, and custom Confluence links unless the user explicitly asks for a lossy cleanup.
|
|
141
|
+
4. Use `confluence commit` instead of raw git for normal sync commits so external docs paths are copied into `.confluence/`.
|
|
142
|
+
5. Use `confluence push --dry-run` before `confluence push`.
|
|
143
|
+
6. Mention fidelity limits when editing complex Confluence content: media, cards, macros, panels, task lists, expand sections, layouts, dates, emojis, and some marks may not round-trip exactly.
|