feat(ql3): establish 3.0 incubation baseline

This commit is contained in:
whyour
2026-08-12 00:25:26 +08:00
parent 4bf92dcfeb
commit c699c32461
2817 changed files with 779642 additions and 653 deletions
@@ -0,0 +1,81 @@
const assert = require('node:assert/strict');
const { test } = require('node:test');
const {
InvalidPluginPackagePromptOutputRetentionPolicyCatalogError,
createPluginPackagePromptOutputRetentionPolicyCatalogResolver,
} = require('../dist/prompt-output/pluginPackagePromptOutputRetention');
const {
pluginPackagePromptOutputArtifactRetentionPolicyDigest,
} = require('../dist/prompt-output/pluginPackagePromptOutputArtifact');
function entry(projectId, revision, retentionMs) {
const policy = { revision, retentionMs };
return {
projectId,
policy,
policyDigest:
pluginPackagePromptOutputArtifactRetentionPolicyDigest(policy),
};
}
test('resolves one exact digest-bound Project retention policy', async () => {
const expected = entry('project-a', 'retention-v1', 3_600_000);
const resolver =
createPluginPackagePromptOutputRetentionPolicyCatalogResolver({
schemaVersion: 1,
policies: [expected, entry('project-b', 'retention-v2', 7_200_000)],
});
assert.deepEqual(
await resolver.resolve({
projectId: expected.projectId,
revision: expected.policy.revision,
}),
expected.policy,
);
assert.equal(
await resolver.resolve({
projectId: expected.projectId,
revision: 'retention-v2',
}),
null,
);
});
test('rejects rewritten, duplicate, widened and unbounded policy catalogs', () => {
const expected = entry('project-a', 'retention-v1', 3_600_000);
assert.throws(
() =>
createPluginPackagePromptOutputRetentionPolicyCatalogResolver({
schemaVersion: 1,
policies: [{ ...expected, policyDigest: '0'.repeat(64) }],
}),
InvalidPluginPackagePromptOutputRetentionPolicyCatalogError,
);
assert.throws(
() =>
createPluginPackagePromptOutputRetentionPolicyCatalogResolver({
schemaVersion: 1,
policies: [expected, expected],
}),
InvalidPluginPackagePromptOutputRetentionPolicyCatalogError,
);
assert.throws(
() =>
createPluginPackagePromptOutputRetentionPolicyCatalogResolver({
schemaVersion: 1,
policies: [{ ...expected, enabled: true }],
}),
InvalidPluginPackagePromptOutputRetentionPolicyCatalogError,
);
assert.throws(
() =>
createPluginPackagePromptOutputRetentionPolicyCatalogResolver({
schemaVersion: 1,
policies: Array.from({ length: 129 }, (_, index) =>
entry(`project-${index}`, 'retention-v1', 3_600_000),
),
}),
InvalidPluginPackagePromptOutputRetentionPolicyCatalogError,
);
});