feat: expose codex migration marketplace governance
This commit is contained in:
@@ -78,6 +78,14 @@ if (args[0] === "app-server" && args[1] === "generate-json-schema") {
|
||||
{ properties: { method: { const: "fs/copy" } } },
|
||||
{ properties: { method: { const: "fs/watch" } } },
|
||||
{ properties: { method: { const: "fs/unwatch" } } },
|
||||
{ properties: { method: { const: "externalAgentConfig/detect" } } },
|
||||
{ properties: { method: { const: "externalAgentConfig/import" } } },
|
||||
{ properties: { method: { const: "externalAgentConfig/import/completed" } } },
|
||||
{ properties: { method: { const: "marketplace/add" } } },
|
||||
{ properties: { method: { const: "marketplace/remove" } } },
|
||||
{ properties: { method: { const: "marketplace/upgrade" } } },
|
||||
{ properties: { method: { const: "experimentalFeature/list" } } },
|
||||
{ properties: { method: { const: "experimentalFeature/enablement/set" } } },
|
||||
{ properties: { method: { const: "skills/extraRoots/set" } } },
|
||||
{ properties: { method: { const: "hooks/list" } } },
|
||||
{ properties: { method: { const: "turn/interrupt" } } },
|
||||
@@ -152,6 +160,11 @@ process.exit(2);
|
||||
assert.equal(manifest.supports.fsRead, true);
|
||||
assert.equal(manifest.supports.fsWrite, true);
|
||||
assert.equal(manifest.supports.fsWatch, true);
|
||||
assert.equal(manifest.supports.externalAgentImport, true);
|
||||
assert.equal(manifest.supports.marketplaceAdd, true);
|
||||
assert.equal(manifest.supports.marketplaceRemove, true);
|
||||
assert.equal(manifest.supports.marketplaceUpgrade, true);
|
||||
assert.equal(manifest.supports.experimentalFeatureEnablementSet, true);
|
||||
assert.deepEqual(manifest.methods, [
|
||||
"account/chatgptAuthTokens/refresh",
|
||||
"account/login/cancel",
|
||||
@@ -166,6 +179,11 @@ process.exit(2);
|
||||
"config/batchWrite",
|
||||
"config/mcpServer/reload",
|
||||
"config/value/write",
|
||||
"experimentalFeature/enablement/set",
|
||||
"experimentalFeature/list",
|
||||
"externalAgentConfig/detect",
|
||||
"externalAgentConfig/import",
|
||||
"externalAgentConfig/import/completed",
|
||||
"fs/copy",
|
||||
"fs/createDirectory",
|
||||
"fs/getMetadata",
|
||||
@@ -176,6 +194,9 @@ process.exit(2);
|
||||
"fs/watch",
|
||||
"fs/writeFile",
|
||||
"hooks/list",
|
||||
"marketplace/add",
|
||||
"marketplace/remove",
|
||||
"marketplace/upgrade",
|
||||
"plugin/install",
|
||||
"plugin/read",
|
||||
"plugin/share/checkout",
|
||||
|
||||
@@ -207,6 +207,28 @@ test("device detail exposes Codex App Server discovered model and extension summ
|
||||
userInitiatedOnly: true,
|
||||
labels: ["执行命令", "写入 stdin", "调整 PTY", "终止命令", "输出流"],
|
||||
},
|
||||
externalAgentGovernanceSummary: {
|
||||
actionCount: 3,
|
||||
importActionCount: 1,
|
||||
notificationActionCount: 1,
|
||||
detectActionAvailable: true,
|
||||
userInitiatedOnly: true,
|
||||
labels: ["迁移检测", "迁移导入", "导入完成"],
|
||||
},
|
||||
marketplaceGovernanceSummary: {
|
||||
actionCount: 3,
|
||||
writeActionCount: 3,
|
||||
upgradeAvailable: true,
|
||||
userInitiatedOnly: true,
|
||||
labels: ["添加市场", "移除市场", "升级市场"],
|
||||
},
|
||||
experimentalFeatureGovernanceSummary: {
|
||||
actionCount: 2,
|
||||
writeActionCount: 1,
|
||||
listAvailable: true,
|
||||
userInitiatedOnly: true,
|
||||
labels: ["实验列表", "启用设置"],
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
@@ -231,6 +253,9 @@ test("device detail exposes Codex App Server discovered model and extension summ
|
||||
assert.equal(cards.capabilities.items.codexConfigGovernance, "配置治理:5 项 · 写入 3 项 · 重载 1 项 · 读取可用");
|
||||
assert.equal(cards.capabilities.items.codexFileSystemGovernance, "文件治理:9 项 · 读 3 项 · 写 3 项 · 监听 2 项");
|
||||
assert.equal(cards.capabilities.items.codexCommandSession, "命令会话:5 项 · 控制 3 项 · 输出流可用 · 可终止");
|
||||
assert.equal(cards.capabilities.items.codexExternalAgentGovernance, "迁移治理:3 项 · 导入 1 项 · 检测可用");
|
||||
assert.equal(cards.capabilities.items.codexMarketplaceGovernance, "市场治理:3 项 · 写入 3 项 · 升级可用");
|
||||
assert.equal(cards.capabilities.items.codexExperimentalFeatureGovernance, "实验特性治理:2 项 · 写入 1 项 · 列表可用");
|
||||
});
|
||||
|
||||
test("device detail exposes folder and project conflict skeleton from workspace policy", async () => {
|
||||
|
||||
@@ -167,6 +167,28 @@ test("codex app-server discovery includes governance and MCP summaries without l
|
||||
userInitiatedOnly: true,
|
||||
labels: ["执行命令", "写入 stdin", "调整 PTY", "终止命令", "输出流"],
|
||||
});
|
||||
assert.deepEqual(metadata.externalAgentGovernanceSummary, {
|
||||
actionCount: 3,
|
||||
importActionCount: 1,
|
||||
notificationActionCount: 1,
|
||||
detectActionAvailable: true,
|
||||
userInitiatedOnly: true,
|
||||
labels: ["迁移检测", "迁移导入", "导入完成"],
|
||||
});
|
||||
assert.deepEqual(metadata.marketplaceGovernanceSummary, {
|
||||
actionCount: 3,
|
||||
writeActionCount: 3,
|
||||
upgradeAvailable: true,
|
||||
userInitiatedOnly: true,
|
||||
labels: ["添加市场", "移除市场", "升级市场"],
|
||||
});
|
||||
assert.deepEqual(metadata.experimentalFeatureGovernanceSummary, {
|
||||
actionCount: 2,
|
||||
writeActionCount: 1,
|
||||
listAvailable: true,
|
||||
userInitiatedOnly: true,
|
||||
labels: ["实验列表", "启用设置"],
|
||||
});
|
||||
|
||||
const serialized = JSON.stringify(metadata);
|
||||
assert.equal(serialized.includes("sk-secret-should-not-leak"), false);
|
||||
|
||||
Reference in New Issue
Block a user