refactor: centralize task runtime contracts (#199)

This commit is contained in:
Eyejoker
2026-05-30 01:56:41 +09:00
committed by GitHub
parent 1531482363
commit 37b57b20bb
14 changed files with 152 additions and 77 deletions

View File

@@ -1,43 +1,39 @@
import { describe, expect, it } from 'vitest';
import {
isBotMessageSourceKind,
inferMessageSourceKindFromBotFlag,
normalizeMessageSourceKind,
resolveInjectedMessageSourceKind,
} from './message-source.js';
import { DEFAULT_MESSAGE_SOURCE_KIND, MESSAGE_SOURCE_KINDS } from './types.js';
describe('message source helpers', () => {
it('defaults IPC injected messages to trusted human-equivalent provenance', () => {
describe('message source kind helpers', () => {
it('uses the canonical source kind list', () => {
expect(MESSAGE_SOURCE_KINDS).toEqual([
'human',
'bot',
'trusted_external_bot',
'ipc_injected_human',
'ipc_injected_bot',
]);
expect(DEFAULT_MESSAGE_SOURCE_KIND).toBe('human');
});
it('normalizes unknown source kinds to the default', () => {
expect(normalizeMessageSourceKind('trusted_external_bot')).toBe(
'trusted_external_bot',
);
expect(normalizeMessageSourceKind('unknown')).toBe('human');
});
it('derives source kinds from legacy and injected inputs', () => {
expect(inferMessageSourceKindFromBotFlag(true)).toBe('bot');
expect(inferMessageSourceKindFromBotFlag(false)).toBe('human');
expect(resolveInjectedMessageSourceKind({ treatAsHuman: true })).toBe(
'trusted_external_bot',
);
expect(
isBotMessageSourceKind(
resolveInjectedMessageSourceKind({ treatAsHuman: true }),
),
).toBe(false);
});
it('defaults non-human IPC injected messages to bot-equivalent provenance', () => {
expect(resolveInjectedMessageSourceKind({ treatAsHuman: false })).toBe(
'ipc_injected_bot',
);
expect(
isBotMessageSourceKind(
resolveInjectedMessageSourceKind({ treatAsHuman: false }),
),
).toBe(true);
});
it('honors valid explicit source kinds and normalizes invalid values', () => {
expect(
resolveInjectedMessageSourceKind({
treatAsHuman: true,
sourceKind: 'ipc_injected_human',
}),
).toBe('ipc_injected_human');
expect(normalizeMessageSourceKind('bot', 'human')).toBe('bot');
expect(normalizeMessageSourceKind('not-real', 'human')).toBe('human');
});
});