agent-plugkit 0.1.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 (156) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +295 -0
  3. package/dist/adapters/agent-plugins.d.ts +35 -0
  4. package/dist/adapters/agent-plugins.js +57 -0
  5. package/dist/adapters/agent-plugins.js.map +1 -0
  6. package/dist/adapters/claude.d.ts +64 -0
  7. package/dist/adapters/claude.js +123 -0
  8. package/dist/adapters/claude.js.map +1 -0
  9. package/dist/adapters/cli-validation.d.ts +12 -0
  10. package/dist/adapters/cli-validation.js +31 -0
  11. package/dist/adapters/cli-validation.js.map +1 -0
  12. package/dist/adapters/codex.d.ts +62 -0
  13. package/dist/adapters/codex.js +91 -0
  14. package/dist/adapters/codex.js.map +1 -0
  15. package/dist/adapters/marketplace-registration.d.ts +17 -0
  16. package/dist/adapters/marketplace-registration.js +369 -0
  17. package/dist/adapters/marketplace-registration.js.map +1 -0
  18. package/dist/adapters/marketplace.d.ts +11 -0
  19. package/dist/adapters/marketplace.js +96 -0
  20. package/dist/adapters/marketplace.js.map +1 -0
  21. package/dist/adapters/mcp.d.ts +17 -0
  22. package/dist/adapters/mcp.js +28 -0
  23. package/dist/adapters/mcp.js.map +1 -0
  24. package/dist/application/artifact-generation.d.ts +58 -0
  25. package/dist/application/artifact-generation.js +344 -0
  26. package/dist/application/artifact-generation.js.map +1 -0
  27. package/dist/application/local-release.d.ts +122 -0
  28. package/dist/application/local-release.js +940 -0
  29. package/dist/application/local-release.js.map +1 -0
  30. package/dist/application/marketplace-document-contract.d.ts +81 -0
  31. package/dist/application/marketplace-document-contract.js +2 -0
  32. package/dist/application/marketplace-document-contract.js.map +1 -0
  33. package/dist/application/marketplace-document.d.ts +45 -0
  34. package/dist/application/marketplace-document.js +557 -0
  35. package/dist/application/marketplace-document.js.map +1 -0
  36. package/dist/application/marketplace-registration-contract.d.ts +51 -0
  37. package/dist/application/marketplace-registration-contract.js +11 -0
  38. package/dist/application/marketplace-registration-contract.js.map +1 -0
  39. package/dist/application/marketplace-registration.d.ts +20 -0
  40. package/dist/application/marketplace-registration.js +304 -0
  41. package/dist/application/marketplace-registration.js.map +1 -0
  42. package/dist/application/marketplace.d.ts +9 -0
  43. package/dist/application/marketplace.js +32 -0
  44. package/dist/application/marketplace.js.map +1 -0
  45. package/dist/application/plugin-components-contract.d.ts +135 -0
  46. package/dist/application/plugin-components-contract.js +2 -0
  47. package/dist/application/plugin-components-contract.js.map +1 -0
  48. package/dist/application/plugin-components.d.ts +17 -0
  49. package/dist/application/plugin-components.js +1000 -0
  50. package/dist/application/plugin-components.js.map +1 -0
  51. package/dist/application/plugin-document-contract.d.ts +115 -0
  52. package/dist/application/plugin-document-contract.js +2 -0
  53. package/dist/application/plugin-document-contract.js.map +1 -0
  54. package/dist/application/plugin-document.d.ts +69 -0
  55. package/dist/application/plugin-document.js +1037 -0
  56. package/dist/application/plugin-document.js.map +1 -0
  57. package/dist/application/plugin-lifecycle-contract.d.ts +230 -0
  58. package/dist/application/plugin-lifecycle-contract.js +3 -0
  59. package/dist/application/plugin-lifecycle-contract.js.map +1 -0
  60. package/dist/application/plugin-lifecycle.d.ts +8 -0
  61. package/dist/application/plugin-lifecycle.js +1375 -0
  62. package/dist/application/plugin-lifecycle.js.map +1 -0
  63. package/dist/application/plugin-scaffold.d.ts +18 -0
  64. package/dist/application/plugin-scaffold.js +188 -0
  65. package/dist/application/plugin-scaffold.js.map +1 -0
  66. package/dist/application/plugin-source.d.ts +39 -0
  67. package/dist/application/plugin-source.js +59 -0
  68. package/dist/application/plugin-source.js.map +1 -0
  69. package/dist/application/skill-document-contract.d.ts +92 -0
  70. package/dist/application/skill-document-contract.js +8 -0
  71. package/dist/application/skill-document-contract.js.map +1 -0
  72. package/dist/application/skill-document-guided.d.ts +3 -0
  73. package/dist/application/skill-document-guided.js +53 -0
  74. package/dist/application/skill-document-guided.js.map +1 -0
  75. package/dist/application/skill-document.d.ts +19 -0
  76. package/dist/application/skill-document.js +368 -0
  77. package/dist/application/skill-document.js.map +1 -0
  78. package/dist/application/workspace-create-contract.d.ts +50 -0
  79. package/dist/application/workspace-create-contract.js +16 -0
  80. package/dist/application/workspace-create-contract.js.map +1 -0
  81. package/dist/application/workspace-create.d.ts +8 -0
  82. package/dist/application/workspace-create.js +656 -0
  83. package/dist/application/workspace-create.js.map +1 -0
  84. package/dist/application/workspace-health-contract.d.ts +133 -0
  85. package/dist/application/workspace-health-contract.js +272 -0
  86. package/dist/application/workspace-health-contract.js.map +1 -0
  87. package/dist/application/workspace-health.d.ts +10 -0
  88. package/dist/application/workspace-health.js +1114 -0
  89. package/dist/application/workspace-health.js.map +1 -0
  90. package/dist/application/workspace-operation-contract.d.ts +99 -0
  91. package/dist/application/workspace-operation-contract.js +450 -0
  92. package/dist/application/workspace-operation-contract.js.map +1 -0
  93. package/dist/application/workspace-operation.d.ts +42 -0
  94. package/dist/application/workspace-operation.js +517 -0
  95. package/dist/application/workspace-operation.js.map +1 -0
  96. package/dist/cli.d.ts +16 -0
  97. package/dist/cli.js +136 -0
  98. package/dist/cli.js.map +1 -0
  99. package/dist/commands/add.d.ts +8 -0
  100. package/dist/commands/add.js +77 -0
  101. package/dist/commands/add.js.map +1 -0
  102. package/dist/commands/build.d.ts +7 -0
  103. package/dist/commands/build.js +29 -0
  104. package/dist/commands/build.js.map +1 -0
  105. package/dist/commands/component-scaffold.d.ts +4 -0
  106. package/dist/commands/component-scaffold.js +14 -0
  107. package/dist/commands/component-scaffold.js.map +1 -0
  108. package/dist/commands/import-skill.d.ts +15 -0
  109. package/dist/commands/import-skill.js +41 -0
  110. package/dist/commands/import-skill.js.map +1 -0
  111. package/dist/commands/index-gen.d.ts +12 -0
  112. package/dist/commands/index-gen.js +33 -0
  113. package/dist/commands/index-gen.js.map +1 -0
  114. package/dist/commands/init-repo.d.ts +8 -0
  115. package/dist/commands/init-repo.js +53 -0
  116. package/dist/commands/init-repo.js.map +1 -0
  117. package/dist/commands/init.d.ts +9 -0
  118. package/dist/commands/init.js +33 -0
  119. package/dist/commands/init.js.map +1 -0
  120. package/dist/commands/install-repo.d.ts +20 -0
  121. package/dist/commands/install-repo.js +200 -0
  122. package/dist/commands/install-repo.js.map +1 -0
  123. package/dist/commands/release-local.d.ts +9 -0
  124. package/dist/commands/release-local.js +27 -0
  125. package/dist/commands/release-local.js.map +1 -0
  126. package/dist/commands/validate.d.ts +8 -0
  127. package/dist/commands/validate.js +45 -0
  128. package/dist/commands/validate.js.map +1 -0
  129. package/dist/core/errors.d.ts +5 -0
  130. package/dist/core/errors.js +12 -0
  131. package/dist/core/errors.js.map +1 -0
  132. package/dist/generated/skill-content.d.ts +3 -0
  133. package/dist/generated/skill-content.js +9 -0
  134. package/dist/generated/skill-content.js.map +1 -0
  135. package/dist/infrastructure/authorized-path.d.ts +20 -0
  136. package/dist/infrastructure/authorized-path.js +85 -0
  137. package/dist/infrastructure/authorized-path.js.map +1 -0
  138. package/dist/infrastructure/document-commit.d.ts +165 -0
  139. package/dist/infrastructure/document-commit.js +1352 -0
  140. package/dist/infrastructure/document-commit.js.map +1 -0
  141. package/dist/infrastructure/process-runner.d.ts +29 -0
  142. package/dist/infrastructure/process-runner.js +130 -0
  143. package/dist/infrastructure/process-runner.js.map +1 -0
  144. package/dist/infrastructure/vscode-user-settings.d.ts +42 -0
  145. package/dist/infrastructure/vscode-user-settings.js +509 -0
  146. package/dist/infrastructure/vscode-user-settings.js.map +1 -0
  147. package/dist/schema/plugin-yaml.d.ts +89 -0
  148. package/dist/schema/plugin-yaml.js +241 -0
  149. package/dist/schema/plugin-yaml.js.map +1 -0
  150. package/dist/utils/frontmatter.d.ts +30 -0
  151. package/dist/utils/frontmatter.js +60 -0
  152. package/dist/utils/frontmatter.js.map +1 -0
  153. package/dist/utils/helpers.d.ts +44 -0
  154. package/dist/utils/helpers.js +94 -0
  155. package/dist/utils/helpers.js.map +1 -0
  156. package/package.json +56 -0
@@ -0,0 +1,96 @@
1
+ import { toTitleCase } from "../utils/helpers.js";
2
+ import { buildMarketplaceEntry } from "./codex.js";
3
+ function buildPortableClientMarketplace(marketplace, plugins) {
4
+ const displayName = toTitleCase(marketplace.name);
5
+ return {
6
+ name: marketplace.name,
7
+ owner: {
8
+ name: marketplace.organization || displayName,
9
+ },
10
+ ...(marketplace.description === undefined
11
+ ? {}
12
+ : { metadata: { description: marketplace.description } }),
13
+ plugins: plugins.map(({ directoryName, config }) => ({
14
+ name: config.name,
15
+ source: `./plugins/${directoryName}`,
16
+ description: config.description,
17
+ version: config.version,
18
+ author: {
19
+ name: config.author.name,
20
+ ...(typeof config.author.email === "string"
21
+ ? { email: config.author.email }
22
+ : {}),
23
+ ...(typeof config.author.url === "string"
24
+ ? { url: config.author.url }
25
+ : {}),
26
+ },
27
+ })),
28
+ };
29
+ }
30
+ export function buildGithubCopilotMarketplace(marketplace, plugins) {
31
+ return buildPortableClientMarketplace(marketplace, plugins);
32
+ }
33
+ export function buildCursorMarketplace(marketplace, plugins) {
34
+ return buildPortableClientMarketplace(marketplace, plugins);
35
+ }
36
+ export function buildClaudeMarketplace(marketplace, plugins) {
37
+ const displayName = toTitleCase(marketplace.name);
38
+ return {
39
+ name: marketplace.name,
40
+ owner: {
41
+ name: marketplace.organization || displayName,
42
+ },
43
+ ...(marketplace.description === undefined
44
+ ? {}
45
+ : { description: marketplace.description }),
46
+ plugins: plugins.map(({ directoryName, config }) => ({
47
+ name: config.name,
48
+ source: `./plugins/${directoryName}`,
49
+ description: config.description,
50
+ version: config.version,
51
+ author: {
52
+ name: config.author.name,
53
+ ...(typeof config.author.email === "string"
54
+ ? { email: config.author.email }
55
+ : {}),
56
+ },
57
+ ...(config.category === undefined ? {} : { category: config.category }),
58
+ ...(config.tags?.length ? { tags: config.tags } : {}),
59
+ ...(config.components.lsp?.length
60
+ ? { lspServers: "./.lsp.json" }
61
+ : {}),
62
+ })),
63
+ };
64
+ }
65
+ export function buildCodexMarketplace(marketplace, plugins) {
66
+ return {
67
+ name: marketplace.name,
68
+ interface: {
69
+ displayName: toTitleCase(marketplace.name),
70
+ },
71
+ plugins: plugins.map(({ directoryName, config }) => buildMarketplaceEntry(config, `./plugins/${directoryName}`)),
72
+ };
73
+ }
74
+ function componentLabels(config) {
75
+ const labels = [];
76
+ if (config.components.skills?.length)
77
+ labels.push("Skill");
78
+ if (config.components.mcp?.length)
79
+ labels.push("MCP");
80
+ if (config.components.lsp?.length)
81
+ labels.push("LSP");
82
+ if (config.components.hooks?.length)
83
+ labels.push("Hook");
84
+ return labels;
85
+ }
86
+ export function buildMarketplaceCatalog(plugins) {
87
+ const rows = plugins
88
+ .map(({ directoryName, config }) => {
89
+ const labels = componentLabels(config);
90
+ const suffix = labels.length ? ` [${labels.join(", ")}]` : "";
91
+ return `- **${directoryName}** (v${config.version})${suffix}: ${config.description}`;
92
+ })
93
+ .join("\n");
94
+ return `# 插件目录\n\n${rows}\n\n_由 CLI 自动生成,请勿手动编辑。_\n`;
95
+ }
96
+ //# sourceMappingURL=marketplace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"marketplace.js","sourceRoot":"","sources":["../../src/adapters/marketplace.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { PluginMcp, PluginMcpRemote, PluginMcpStdio, PluginYaml } from '../schema/plugin-yaml.js';
2
+ export type NativeMcpServer = {
3
+ type?: 'stdio';
4
+ command: string;
5
+ args?: string[];
6
+ env?: Record<string, string>;
7
+ cwd?: string;
8
+ } | {
9
+ type: PluginMcpRemote['type'];
10
+ url: string;
11
+ headers?: Record<string, string>;
12
+ };
13
+ export interface NativeMcpConfig {
14
+ mcpServers: Record<string, NativeMcpServer>;
15
+ }
16
+ export declare function isStdioMcp(mcp: PluginMcp): mcp is PluginMcpStdio;
17
+ export declare function buildNativeMcpConfig(config: PluginYaml): NativeMcpConfig | null;
@@ -0,0 +1,28 @@
1
+ export function isStdioMcp(mcp) {
2
+ return mcp.type === undefined || mcp.type === 'stdio';
3
+ }
4
+ export function buildNativeMcpConfig(config) {
5
+ const mcps = config.components.mcp;
6
+ if (!mcps || mcps.length === 0)
7
+ return null;
8
+ const servers = {};
9
+ for (const mcp of mcps) {
10
+ if (isStdioMcp(mcp)) {
11
+ servers[mcp.name] = {
12
+ ...(mcp.type === 'stdio' ? { type: mcp.type } : {}),
13
+ command: mcp.command,
14
+ ...(mcp.args ? { args: mcp.args } : {}),
15
+ ...(mcp.env ? { env: mcp.env } : {}),
16
+ ...(mcp.cwd ? { cwd: mcp.cwd } : {}),
17
+ };
18
+ continue;
19
+ }
20
+ servers[mcp.name] = {
21
+ type: mcp.type,
22
+ url: mcp.url,
23
+ ...(mcp.headers ? { headers: mcp.headers } : {}),
24
+ };
25
+ }
26
+ return { mcpServers: servers };
27
+ }
28
+ //# sourceMappingURL=mcp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/adapters/mcp.ts"],"names":[],"mappings":"AAyBA,MAAM,UAAU,UAAU,CAAC,GAAc;IACvC,OAAO,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAAkB;IACrD,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC;IACnC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAE5C,MAAM,OAAO,GAAkC,EAAE,CAAC;IAClD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACpB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG;gBAClB,GAAG,CAAC,GAAG,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnD,OAAO,EAAE,GAAG,CAAC,OAAO;gBACpB,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACvC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACrC,CAAC;YACF,SAAS;QACX,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG;YAClB,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,GAAG,EAAE,GAAG,CAAC,GAAG;YACZ,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACjD,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;AACjC,CAAC"}
@@ -0,0 +1,58 @@
1
+ import { type AtomicArtifactGroupCommitDependencies, type AtomicArtifactGroupCommitResult, type AtomicArtifactMutation, type AtomicArtifactExpectation } from "../infrastructure/document-commit.js";
2
+ export type ArtifactPlatform = "agent-plugins" | "claude-code" | "codex" | "cursor" | "github-copilot" | "shared";
3
+ export type ArtifactType = "plugin-manifest" | "mcp-config" | "hook-config" | "lsp-config" | "marketplace-index" | "compatibility-mirror" | "catalog";
4
+ export type ArtifactFreshness = "missing" | "stale" | "fresh";
5
+ export interface WorkspaceArtifactFact {
6
+ readonly id: string;
7
+ readonly source: {
8
+ readonly kind: "plugin" | "marketplace";
9
+ readonly id: string;
10
+ readonly label: string;
11
+ };
12
+ readonly platform: ArtifactPlatform;
13
+ readonly type: ArtifactType;
14
+ readonly relativePath: string;
15
+ readonly freshness: ArtifactFreshness;
16
+ }
17
+ interface PlannedArtifact {
18
+ readonly source: WorkspaceArtifactFact["source"];
19
+ readonly platform: ArtifactPlatform;
20
+ readonly type: ArtifactType;
21
+ readonly relativePath: string;
22
+ readonly bytes: Uint8Array;
23
+ }
24
+ type PlannedAbsentArtifact = Omit<PlannedArtifact, "bytes">;
25
+ export interface PluginBuildPlan {
26
+ readonly kind: "plugin-build";
27
+ readonly workspaceDirectory: string;
28
+ readonly pluginName: string;
29
+ readonly expectations: readonly AtomicArtifactExpectation[];
30
+ readonly mutations: readonly AtomicArtifactMutation[];
31
+ readonly artifacts: readonly PlannedArtifact[];
32
+ readonly absentArtifacts: readonly PlannedAbsentArtifact[];
33
+ }
34
+ export interface MarketplaceIndexPlan {
35
+ readonly kind: "marketplace-index";
36
+ readonly workspaceDirectory: string;
37
+ readonly pluginCount: number;
38
+ readonly expectations: readonly AtomicArtifactExpectation[];
39
+ readonly mutations: readonly AtomicArtifactMutation[];
40
+ readonly artifacts: readonly PlannedArtifact[];
41
+ }
42
+ export type ArtifactCommitResult = AtomicArtifactGroupCommitResult;
43
+ export type WorkspaceArtifactInventoryResult = {
44
+ readonly status: "inspected";
45
+ readonly overall: ArtifactFreshness;
46
+ readonly artifacts: readonly WorkspaceArtifactFact[];
47
+ } | {
48
+ readonly status: "unavailable";
49
+ readonly message: string;
50
+ };
51
+ export declare function planPluginBuild(workspaceDirectory: string, pluginName: string): PluginBuildPlan;
52
+ export declare function commitPluginBuildPlan(plan: PluginBuildPlan, dependencies?: AtomicArtifactGroupCommitDependencies): ArtifactCommitResult;
53
+ export declare function planMarketplaceIndex(workspaceDirectory: string): MarketplaceIndexPlan;
54
+ export declare function commitMarketplaceIndexPlan(plan: MarketplaceIndexPlan, dependencies?: AtomicArtifactGroupCommitDependencies): ArtifactCommitResult;
55
+ export declare function artifactIdFor(scopeId: string, relativePath: string): string;
56
+ export declare function inspectWorkspaceArtifacts(workspaceDirectory: string): WorkspaceArtifactInventoryResult;
57
+ export declare function operationArtifactsFromPlan(operationId: string, workspaceDirectory: string, plan: PluginBuildPlan | MarketplaceIndexPlan): WorkspaceArtifactFact[];
58
+ export {};
@@ -0,0 +1,344 @@
1
+ import { createHash } from "node:crypto";
2
+ import { existsSync, lstatSync, readFileSync, } from "node:fs";
3
+ import { join } from "node:path";
4
+ import { buildClaudeHooksConfig, buildClaudeManifest, buildClaudeMcpConfig, buildLspConfig, } from "../adapters/claude.js";
5
+ import { buildCodexManifest } from "../adapters/codex.js";
6
+ import { buildAgentPluginManifest, buildAgentPluginMcpConfig, } from "../adapters/agent-plugins.js";
7
+ import { buildClaudeMarketplace, buildCodexMarketplace, buildCursorMarketplace, buildGithubCopilotMarketplace, buildMarketplaceCatalog, } from "../adapters/marketplace.js";
8
+ import { commitAuthorizedArtifactGroup, documentRevision, } from "../infrastructure/document-commit.js";
9
+ import { authorizeExistingDirectory, resolveAuthorizedPath, } from "../infrastructure/authorized-path.js";
10
+ import { loadAllPlugins, loadMarketplaceMetadata, loadPluginYaml, resolveRepoContext, } from "../utils/helpers.js";
11
+ const encoder = new TextEncoder();
12
+ function jsonBytes(value) {
13
+ return encoder.encode(`${JSON.stringify(value, null, 2)}\n`);
14
+ }
15
+ function textBytes(value) {
16
+ return encoder.encode(value);
17
+ }
18
+ function revision(workspaceDirectory, relativePath) {
19
+ const authorization = authorizeExistingDirectory(workspaceDirectory);
20
+ const path = resolveAuthorizedPath(authorization, relativePath);
21
+ if (!existsSync(path))
22
+ return "missing";
23
+ const stat = lstatSync(path);
24
+ if (!stat.isFile()) {
25
+ throw new Error(`生成计划目标不是普通文件:${relativePath}`);
26
+ }
27
+ return documentRevision(readFileSync(path));
28
+ }
29
+ function expectation(workspaceDirectory, relativePath) {
30
+ return {
31
+ relativePath,
32
+ revision: revision(workspaceDirectory, relativePath),
33
+ };
34
+ }
35
+ function write(relativePath, bytes) {
36
+ return { relativePath, action: "write", bytes, mode: 0o644 };
37
+ }
38
+ function remove(relativePath) {
39
+ return { relativePath, action: "delete" };
40
+ }
41
+ function pluginArtifact(pluginName, relativePath, bytes, platform, type) {
42
+ return {
43
+ ...pluginArtifactIdentity(pluginName, relativePath, platform, type),
44
+ bytes,
45
+ };
46
+ }
47
+ function pluginArtifactIdentity(pluginName, relativePath, platform, type) {
48
+ return {
49
+ source: {
50
+ kind: "plugin",
51
+ id: `plugin:${pluginName}`,
52
+ label: pluginName,
53
+ },
54
+ platform,
55
+ type,
56
+ relativePath,
57
+ };
58
+ }
59
+ export function planPluginBuild(workspaceDirectory, pluginName) {
60
+ const context = resolveRepoContext(workspaceDirectory);
61
+ const pluginDirectory = join(context.pluginsDir, pluginName);
62
+ const config = loadPluginYaml(pluginDirectory);
63
+ const prefix = `plugins/${pluginName}`;
64
+ const claudeManifestPath = `${prefix}/.claude-plugin/plugin.json`;
65
+ const hookPath = `${prefix}/hooks/hooks.json`;
66
+ const mcpPath = `${prefix}/.mcp.json`;
67
+ const lspPath = `${prefix}/.lsp.json`;
68
+ const codexManifestPath = `${prefix}/.codex-plugin/plugin.json`;
69
+ const agentPluginManifestPath = `${prefix}/plugin.json`;
70
+ const agentPluginMcpPath = `${prefix}/mcp.json`;
71
+ const claudeManifest = jsonBytes(buildClaudeManifest(config));
72
+ const codexManifest = jsonBytes(buildCodexManifest(config));
73
+ const agentPluginManifest = jsonBytes(buildAgentPluginManifest(config));
74
+ const hooks = buildClaudeHooksConfig(config);
75
+ const mcp = buildClaudeMcpConfig(config);
76
+ const agentPluginMcp = buildAgentPluginMcpConfig(config);
77
+ const lsp = buildLspConfig(config);
78
+ const mutations = [
79
+ write(agentPluginManifestPath, agentPluginManifest),
80
+ agentPluginMcp === null
81
+ ? remove(agentPluginMcpPath)
82
+ : write(agentPluginMcpPath, jsonBytes(agentPluginMcp)),
83
+ write(claudeManifestPath, claudeManifest),
84
+ hooks === null ? remove(hookPath) : write(hookPath, jsonBytes(hooks)),
85
+ mcp === null ? remove(mcpPath) : write(mcpPath, jsonBytes(mcp)),
86
+ lsp === null ? remove(lspPath) : write(lspPath, jsonBytes(lsp)),
87
+ write(codexManifestPath, codexManifest),
88
+ ];
89
+ const artifacts = [
90
+ pluginArtifact(pluginName, agentPluginManifestPath, agentPluginManifest, "agent-plugins", "plugin-manifest"),
91
+ ...(agentPluginMcp === null
92
+ ? []
93
+ : [
94
+ pluginArtifact(pluginName, agentPluginMcpPath, jsonBytes(agentPluginMcp), "agent-plugins", "mcp-config"),
95
+ ]),
96
+ pluginArtifact(pluginName, claudeManifestPath, claudeManifest, "claude-code", "plugin-manifest"),
97
+ ...(hooks === null
98
+ ? []
99
+ : [
100
+ pluginArtifact(pluginName, hookPath, jsonBytes(hooks), "claude-code", "hook-config"),
101
+ ]),
102
+ ...(mcp === null
103
+ ? []
104
+ : [
105
+ pluginArtifact(pluginName, mcpPath, jsonBytes(mcp), "shared", "mcp-config"),
106
+ ]),
107
+ ...(lsp === null
108
+ ? []
109
+ : [
110
+ pluginArtifact(pluginName, lspPath, jsonBytes(lsp), "claude-code", "lsp-config"),
111
+ ]),
112
+ pluginArtifact(pluginName, codexManifestPath, codexManifest, "codex", "plugin-manifest"),
113
+ ];
114
+ const absentArtifacts = [
115
+ ...(agentPluginMcp === null
116
+ ? [
117
+ pluginArtifactIdentity(pluginName, agentPluginMcpPath, "agent-plugins", "mcp-config"),
118
+ ]
119
+ : []),
120
+ ...(hooks === null
121
+ ? [
122
+ pluginArtifactIdentity(pluginName, hookPath, "claude-code", "hook-config"),
123
+ ]
124
+ : []),
125
+ ...(mcp === null
126
+ ? [
127
+ pluginArtifactIdentity(pluginName, mcpPath, "shared", "mcp-config"),
128
+ ]
129
+ : []),
130
+ ...(lsp === null
131
+ ? [
132
+ pluginArtifactIdentity(pluginName, lspPath, "claude-code", "lsp-config"),
133
+ ]
134
+ : []),
135
+ ];
136
+ return {
137
+ kind: "plugin-build",
138
+ workspaceDirectory: context.rootDir,
139
+ pluginName,
140
+ expectations: [
141
+ expectation(context.rootDir, `${prefix}/plugin.yaml`),
142
+ ...mutations.map((item) => expectation(context.rootDir, item.relativePath)),
143
+ ],
144
+ mutations,
145
+ artifacts,
146
+ absentArtifacts,
147
+ };
148
+ }
149
+ export function commitPluginBuildPlan(plan, dependencies = {}) {
150
+ return commitAuthorizedArtifactGroup({
151
+ directory: plan.workspaceDirectory,
152
+ expectations: plan.expectations,
153
+ mutations: plan.mutations,
154
+ }, dependencies);
155
+ }
156
+ export function planMarketplaceIndex(workspaceDirectory) {
157
+ const context = resolveRepoContext(workspaceDirectory);
158
+ const plugins = loadAllPlugins(context).map(({ name, config }) => ({
159
+ directoryName: name,
160
+ config,
161
+ }));
162
+ const marketplace = loadMarketplaceMetadata(context);
163
+ if (plugins.length === 0) {
164
+ return {
165
+ kind: "marketplace-index",
166
+ workspaceDirectory: context.rootDir,
167
+ pluginCount: 0,
168
+ expectations: [
169
+ expectation(context.rootDir, "marketplace.yaml"),
170
+ ],
171
+ mutations: [],
172
+ artifacts: [],
173
+ };
174
+ }
175
+ const claudePath = ".claude-plugin/marketplace.json";
176
+ const codexPath = ".agents/plugins/marketplace.json";
177
+ const githubCopilotPath = ".github/plugin/marketplace.json";
178
+ const cursorPath = ".cursor-plugin/marketplace.json";
179
+ const mirrorPath = "marketplace.json";
180
+ const catalogPath = "plugins/CATALOG.md";
181
+ const claude = jsonBytes(buildClaudeMarketplace(marketplace, plugins));
182
+ const codex = jsonBytes(buildCodexMarketplace(marketplace, plugins));
183
+ const githubCopilot = jsonBytes(buildGithubCopilotMarketplace(marketplace, plugins));
184
+ const cursor = jsonBytes(buildCursorMarketplace(marketplace, plugins));
185
+ const catalog = textBytes(buildMarketplaceCatalog(plugins));
186
+ const source = {
187
+ kind: "marketplace",
188
+ id: "marketplace",
189
+ label: marketplace.name,
190
+ };
191
+ const artifacts = [
192
+ {
193
+ source,
194
+ platform: "claude-code",
195
+ type: "marketplace-index",
196
+ relativePath: claudePath,
197
+ bytes: claude,
198
+ },
199
+ {
200
+ source,
201
+ platform: "codex",
202
+ type: "marketplace-index",
203
+ relativePath: codexPath,
204
+ bytes: codex,
205
+ },
206
+ {
207
+ source,
208
+ platform: "github-copilot",
209
+ type: "marketplace-index",
210
+ relativePath: githubCopilotPath,
211
+ bytes: githubCopilot,
212
+ },
213
+ {
214
+ source,
215
+ platform: "cursor",
216
+ type: "marketplace-index",
217
+ relativePath: cursorPath,
218
+ bytes: cursor,
219
+ },
220
+ {
221
+ source,
222
+ platform: "github-copilot",
223
+ type: "compatibility-mirror",
224
+ relativePath: mirrorPath,
225
+ bytes: githubCopilot,
226
+ },
227
+ {
228
+ source,
229
+ platform: "shared",
230
+ type: "catalog",
231
+ relativePath: catalogPath,
232
+ bytes: catalog,
233
+ },
234
+ ];
235
+ const mutations = artifacts.map((artifact) => write(artifact.relativePath, artifact.bytes));
236
+ return {
237
+ kind: "marketplace-index",
238
+ workspaceDirectory: context.rootDir,
239
+ pluginCount: plugins.length,
240
+ expectations: [
241
+ expectation(context.rootDir, "marketplace.yaml"),
242
+ ...plugins.map((plugin) => expectation(context.rootDir, `plugins/${plugin.directoryName}/plugin.yaml`)),
243
+ ...mutations.map((item) => expectation(context.rootDir, item.relativePath)),
244
+ ],
245
+ mutations,
246
+ artifacts,
247
+ };
248
+ }
249
+ export function commitMarketplaceIndexPlan(plan, dependencies = {}) {
250
+ if (plan.pluginCount === 0) {
251
+ return {
252
+ status: "verified",
253
+ changedPaths: [],
254
+ diskChanged: false,
255
+ rolledBack: false,
256
+ cleanupComplete: true,
257
+ };
258
+ }
259
+ return commitAuthorizedArtifactGroup({
260
+ directory: plan.workspaceDirectory,
261
+ expectations: plan.expectations,
262
+ mutations: plan.mutations,
263
+ }, dependencies);
264
+ }
265
+ export function artifactIdFor(scopeId, relativePath) {
266
+ return createHash("sha256")
267
+ .update(scopeId)
268
+ .update("\0")
269
+ .update(relativePath)
270
+ .digest("hex");
271
+ }
272
+ function inspectPlanArtifacts(workspaceDirectory, scopeId, artifacts) {
273
+ const authorization = authorizeExistingDirectory(workspaceDirectory);
274
+ return artifacts.map((artifact) => {
275
+ const path = resolveAuthorizedPath(authorization, artifact.relativePath);
276
+ let freshness = "missing";
277
+ if (existsSync(path)) {
278
+ const stat = lstatSync(path);
279
+ freshness =
280
+ stat.isFile() &&
281
+ Buffer.from(artifact.bytes).equals(readFileSync(path))
282
+ ? "fresh"
283
+ : "stale";
284
+ }
285
+ return {
286
+ id: artifactIdFor(scopeId, artifact.relativePath),
287
+ source: artifact.source,
288
+ platform: artifact.platform,
289
+ type: artifact.type,
290
+ relativePath: artifact.relativePath,
291
+ freshness,
292
+ };
293
+ });
294
+ }
295
+ function inspectExpectedAbsentArtifacts(workspaceDirectory, scopeId, artifacts) {
296
+ const authorization = authorizeExistingDirectory(workspaceDirectory);
297
+ return artifacts.flatMap((artifact) => {
298
+ const path = resolveAuthorizedPath(authorization, artifact.relativePath);
299
+ if (!existsSync(path))
300
+ return [];
301
+ return [
302
+ {
303
+ id: artifactIdFor(scopeId, artifact.relativePath),
304
+ source: artifact.source,
305
+ platform: artifact.platform,
306
+ type: artifact.type,
307
+ relativePath: artifact.relativePath,
308
+ freshness: "stale",
309
+ },
310
+ ];
311
+ });
312
+ }
313
+ export function inspectWorkspaceArtifacts(workspaceDirectory) {
314
+ try {
315
+ const context = resolveRepoContext(workspaceDirectory);
316
+ const pluginPlans = loadAllPlugins(context).map(({ name }) => planPluginBuild(context.rootDir, name));
317
+ const indexPlan = planMarketplaceIndex(context.rootDir);
318
+ const artifacts = [
319
+ ...pluginPlans.flatMap((plan) => [
320
+ ...inspectPlanArtifacts(context.rootDir, `inventory:${plan.pluginName}`, plan.artifacts),
321
+ ...inspectExpectedAbsentArtifacts(context.rootDir, `inventory:${plan.pluginName}`, plan.absentArtifacts),
322
+ ]),
323
+ ...inspectPlanArtifacts(context.rootDir, "inventory:marketplace", indexPlan.artifacts),
324
+ ];
325
+ const overall = artifacts.some((artifact) => artifact.freshness === "stale")
326
+ ? "stale"
327
+ : artifacts.some((artifact) => artifact.freshness === "missing")
328
+ ? "missing"
329
+ : "fresh";
330
+ return { status: "inspected", overall, artifacts };
331
+ }
332
+ catch (error) {
333
+ return {
334
+ status: "unavailable",
335
+ message: error instanceof Error
336
+ ? `无法检查生成物:${error.message}`
337
+ : "无法检查生成物。",
338
+ };
339
+ }
340
+ }
341
+ export function operationArtifactsFromPlan(operationId, workspaceDirectory, plan) {
342
+ return inspectPlanArtifacts(workspaceDirectory, operationId, plan.artifacts);
343
+ }
344
+ //# sourceMappingURL=artifact-generation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"artifact-generation.js","sourceRoot":"","sources":["../../src/application/artifact-generation.ts"],"names":[],"mappings":"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"}