@hasna/todos 0.11.40 → 0.11.41
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/README.md +507 -1
- package/dashboard/dist/assets/{index-B-w1tUlm.js → index-CVF1vn7Z.js} +23 -23
- package/dashboard/dist/assets/index-DJm6m6Yy.css +1 -0
- package/dashboard/dist/index.html +2 -2
- package/dist/cli/commands/agent-commands.d.ts.map +1 -1
- package/dist/cli/commands/config-serve-commands.d.ts.map +1 -1
- package/dist/cli/commands/mcp-hooks-commands.d.ts.map +1 -1
- package/dist/cli/commands/plan-template-commands.d.ts.map +1 -1
- package/dist/cli/commands/project-commands.d.ts.map +1 -1
- package/dist/cli/commands/query-commands.d.ts.map +1 -1
- package/dist/cli/index.js +16873 -8056
- package/dist/cli-mcp-parity.d.ts +41 -0
- package/dist/cli-mcp-parity.d.ts.map +1 -0
- package/dist/contracts.d.ts +4 -0
- package/dist/contracts.d.ts.map +1 -1
- package/dist/contracts.js +6329 -24
- package/dist/db/database.d.ts +2 -1
- package/dist/db/database.d.ts.map +1 -1
- package/dist/db/handoffs.d.ts +27 -1
- package/dist/db/handoffs.d.ts.map +1 -1
- package/dist/db/inbox.d.ts +47 -0
- package/dist/db/inbox.d.ts.map +1 -0
- package/dist/db/migrations.d.ts.map +1 -1
- package/dist/db/plans.d.ts.map +1 -1
- package/dist/db/schema.d.ts.map +1 -1
- package/dist/db/task-commits.d.ts +51 -0
- package/dist/db/task-commits.d.ts.map +1 -1
- package/dist/db/task-crud.d.ts.map +1 -1
- package/dist/db/task-lifecycle.d.ts +16 -1
- package/dist/db/task-lifecycle.d.ts.map +1 -1
- package/dist/db/task-runs.d.ts +130 -0
- package/dist/db/task-runs.d.ts.map +1 -0
- package/dist/db/tasks.d.ts +2 -2
- package/dist/db/tasks.d.ts.map +1 -1
- package/dist/index.d.ts +47 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10466 -3879
- package/dist/json-contracts.d.ts.map +1 -1
- package/dist/lib/activity-timeline.d.ts +43 -0
- package/dist/lib/activity-timeline.d.ts.map +1 -0
- package/dist/lib/agent-run-dispatcher.d.ts +62 -0
- package/dist/lib/agent-run-dispatcher.d.ts.map +1 -0
- package/dist/lib/approval-gates.d.ts +52 -0
- package/dist/lib/approval-gates.d.ts.map +1 -0
- package/dist/lib/artifact-store.d.ts +68 -0
- package/dist/lib/artifact-store.d.ts.map +1 -0
- package/dist/lib/auto-assign.d.ts +3 -5
- package/dist/lib/auto-assign.d.ts.map +1 -1
- package/dist/lib/config.d.ts +121 -0
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/context-packs.d.ts +140 -0
- package/dist/lib/context-packs.d.ts.map +1 -0
- package/dist/lib/doctor.d.ts +46 -0
- package/dist/lib/doctor.d.ts.map +1 -0
- package/dist/lib/event-hooks.d.ts +58 -0
- package/dist/lib/event-hooks.d.ts.map +1 -0
- package/dist/lib/local-bridge.d.ts +77 -0
- package/dist/lib/local-bridge.d.ts.map +1 -0
- package/dist/lib/local-encryption.d.ts +94 -0
- package/dist/lib/local-encryption.d.ts.map +1 -0
- package/dist/lib/local-fields.d.ts +33 -0
- package/dist/lib/local-fields.d.ts.map +1 -0
- package/dist/lib/policy-packs.d.ts +87 -0
- package/dist/lib/policy-packs.d.ts.map +1 -0
- package/dist/lib/project-bootstrap.d.ts +35 -0
- package/dist/lib/project-bootstrap.d.ts.map +1 -0
- package/dist/lib/public-release-gate.d.ts +50 -0
- package/dist/lib/public-release-gate.d.ts.map +1 -0
- package/dist/lib/redaction.d.ts +3 -0
- package/dist/lib/redaction.d.ts.map +1 -0
- package/dist/lib/runner-sandbox.d.ts +50 -0
- package/dist/lib/runner-sandbox.d.ts.map +1 -0
- package/dist/lib/task-contracts.d.ts +75 -0
- package/dist/lib/task-contracts.d.ts.map +1 -0
- package/dist/lib/task-dedupe.d.ts +45 -0
- package/dist/lib/task-dedupe.d.ts.map +1 -0
- package/dist/lib/todos-md.d.ts +21 -0
- package/dist/lib/todos-md.d.ts.map +1 -0
- package/dist/lib/verification-providers.d.ts +54 -0
- package/dist/lib/verification-providers.d.ts.map +1 -0
- package/dist/lib/workspace-trust.d.ts +38 -0
- package/dist/lib/workspace-trust.d.ts.map +1 -0
- package/dist/mcp/index.js +8513 -2441
- package/dist/mcp/token-utils.d.ts +2 -2
- package/dist/mcp/token-utils.d.ts.map +1 -1
- package/dist/mcp/tools/task-adv-tools.d.ts.map +1 -1
- package/dist/mcp/tools/task-auto-tools.d.ts.map +1 -1
- package/dist/mcp/tools/task-meta-tools.d.ts.map +1 -1
- package/dist/mcp/tools/task-project-tools.d.ts.map +1 -1
- package/dist/mcp/tools/task-rel-tools.d.ts.map +1 -1
- package/dist/mcp/tools/task-resources.d.ts.map +1 -1
- package/dist/mcp/tools/task-workflow-tools.d.ts.map +1 -1
- package/dist/mcp.js +84 -2
- package/dist/registry.d.ts +2 -0
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +6982 -60
- package/dist/release-provenance.json +7 -0
- package/dist/sdk/types.d.ts +26 -1
- package/dist/sdk/types.d.ts.map +1 -1
- package/dist/server/index.js +1306 -129
- package/dist/server/routes.d.ts.map +1 -1
- package/dist/storage.js +1030 -15
- package/dist/test/no-network.d.ts +7 -0
- package/dist/test/no-network.d.ts.map +1 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +10 -4
- package/dashboard/dist/assets/index-BXQ39iMX.css +0 -1
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { type LocalEventHookConfig, type LocalEventHookTarget } from "./config.js";
|
|
2
|
+
export declare const LOCAL_EVENT_TYPES: readonly ["task.assigned", "task.blocked", "task.started", "task.completed", "task.failed", "task.unblocked", "task.status_changed", "plan.updated", "run.started", "run.completed", "run.failed", "run.cancelled", "approval.decided", "import.finished", "export.finished"];
|
|
3
|
+
export type LocalEventType = typeof LOCAL_EVENT_TYPES[number] | string;
|
|
4
|
+
export interface LocalEventHookInput {
|
|
5
|
+
name: string;
|
|
6
|
+
events: string[];
|
|
7
|
+
target: LocalEventHookTarget;
|
|
8
|
+
enabled?: boolean;
|
|
9
|
+
file_path?: string;
|
|
10
|
+
socket_path?: string;
|
|
11
|
+
command?: string;
|
|
12
|
+
cwd?: string;
|
|
13
|
+
sandbox?: string;
|
|
14
|
+
env?: Record<string, string>;
|
|
15
|
+
retry?: {
|
|
16
|
+
attempts?: number;
|
|
17
|
+
backoff_ms?: number;
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
export interface LocalEventEnvelope {
|
|
21
|
+
id: string;
|
|
22
|
+
type: LocalEventType;
|
|
23
|
+
timestamp: string;
|
|
24
|
+
payload: unknown;
|
|
25
|
+
source: {
|
|
26
|
+
package: "@hasna/todos";
|
|
27
|
+
local_only: true;
|
|
28
|
+
};
|
|
29
|
+
integrity: {
|
|
30
|
+
algorithm: "sha256";
|
|
31
|
+
digest: string;
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
export interface LocalEventHookDispatchInput {
|
|
35
|
+
type: LocalEventType;
|
|
36
|
+
payload?: unknown;
|
|
37
|
+
hooks?: LocalEventHookConfig[];
|
|
38
|
+
timestamp?: string;
|
|
39
|
+
}
|
|
40
|
+
export interface LocalEventHookDispatchResult {
|
|
41
|
+
hook: string;
|
|
42
|
+
event_id: string;
|
|
43
|
+
event_type: LocalEventType;
|
|
44
|
+
target: LocalEventHookTarget;
|
|
45
|
+
status: "delivered" | "failed" | "skipped";
|
|
46
|
+
attempts: number;
|
|
47
|
+
integrity: LocalEventEnvelope["integrity"];
|
|
48
|
+
output_summary?: string;
|
|
49
|
+
error?: string;
|
|
50
|
+
}
|
|
51
|
+
export declare function upsertLocalEventHook(input: LocalEventHookInput): LocalEventHookConfig;
|
|
52
|
+
export declare function listLocalEventHooks(): LocalEventHookConfig[];
|
|
53
|
+
export declare function getLocalEventHook(name: string): LocalEventHookConfig | null;
|
|
54
|
+
export declare function removeLocalEventHook(name: string): boolean;
|
|
55
|
+
export declare function emitLocalEventHooks(input: LocalEventHookDispatchInput): Promise<LocalEventHookDispatchResult[]>;
|
|
56
|
+
export declare function emitLocalEventHooksQuiet(input: LocalEventHookDispatchInput): void;
|
|
57
|
+
export declare function testLocalEventHook(name: string, input: Omit<LocalEventHookDispatchInput, "hooks">): Promise<LocalEventHookDispatchResult[]>;
|
|
58
|
+
//# sourceMappingURL=event-hooks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event-hooks.d.ts","sourceRoot":"","sources":["../../src/lib/event-hooks.ts"],"names":[],"mappings":"AAMA,OAAO,EAGL,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EAC1B,MAAM,aAAa,CAAC;AAErB,eAAO,MAAM,iBAAiB,+QAgBpB,CAAC;AAEX,MAAM,MAAM,cAAc,GAAG,OAAO,iBAAiB,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;AAEvE,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,EAAE,oBAAoB,CAAC;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,KAAK,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACpD;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,cAAc,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE;QACN,OAAO,EAAE,cAAc,CAAC;QACxB,UAAU,EAAE,IAAI,CAAC;KAClB,CAAC;IACF,SAAS,EAAE;QACT,SAAS,EAAE,QAAQ,CAAC;QACpB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,cAAc,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,oBAAoB,EAAE,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,4BAA4B;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,cAAc,CAAC;IAC3B,MAAM,EAAE,oBAAoB,CAAC;IAC7B,MAAM,EAAE,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAC;IAC3C,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,kBAAkB,CAAC,WAAW,CAAC,CAAC;IAC3C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAmLD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,mBAAmB,GAAG,oBAAoB,CAYrF;AAED,wBAAgB,mBAAmB,IAAI,oBAAoB,EAAE,CAE5D;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,oBAAoB,GAAG,IAAI,CAE3E;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAQ1D;AAED,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,2BAA2B,GAAG,OAAO,CAAC,4BAA4B,EAAE,CAAC,CAKrH;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,2BAA2B,GAAG,IAAI,CAEjF;AAED,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,2BAA2B,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,4BAA4B,EAAE,CAAC,CAIjJ"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import type { Database } from "bun:sqlite";
|
|
2
|
+
import { type ExportedArtifactContent } from "./artifact-store.js";
|
|
3
|
+
import type { Project, Plan, Task, TaskComment, TaskDependency, TaskList } from "../types/index.js";
|
|
4
|
+
import type { TaskCommit, TaskGitRef, TaskVerification } from "../db/task-commits.js";
|
|
5
|
+
import type { TaskFile } from "../db/task-files.js";
|
|
6
|
+
import type { TaskRun, TaskRunArtifact, TaskRunCommand, TaskRunEvent } from "../db/task-runs.js";
|
|
7
|
+
export declare const TODOS_LOCAL_BRIDGE_KIND = "hasna.todos.local-bridge";
|
|
8
|
+
export declare const TODOS_LOCAL_BRIDGE_SCHEMA_VERSION = 1;
|
|
9
|
+
export interface TodosLocalBridgePackageSource {
|
|
10
|
+
packageName: "@hasna/todos";
|
|
11
|
+
repository: "hasna/todos";
|
|
12
|
+
version: string;
|
|
13
|
+
}
|
|
14
|
+
export interface TodosLocalBridgeSource {
|
|
15
|
+
project_id: string | null;
|
|
16
|
+
project_path: string | null;
|
|
17
|
+
}
|
|
18
|
+
export interface TodosLocalBridgeData {
|
|
19
|
+
projects: Project[];
|
|
20
|
+
task_lists: TaskList[];
|
|
21
|
+
plans: Plan[];
|
|
22
|
+
tasks: Task[];
|
|
23
|
+
task_dependencies: TaskDependency[];
|
|
24
|
+
comments: TaskComment[];
|
|
25
|
+
runs: TaskRun[];
|
|
26
|
+
run_events: TaskRunEvent[];
|
|
27
|
+
run_commands: TaskRunCommand[];
|
|
28
|
+
run_artifacts: TaskRunArtifact[];
|
|
29
|
+
task_files: TaskFile[];
|
|
30
|
+
task_commits: TaskCommit[];
|
|
31
|
+
task_git_refs: TaskGitRef[];
|
|
32
|
+
task_verifications: TaskVerification[];
|
|
33
|
+
}
|
|
34
|
+
export interface TodosLocalBridgeBundle {
|
|
35
|
+
schemaVersion: typeof TODOS_LOCAL_BRIDGE_SCHEMA_VERSION;
|
|
36
|
+
kind: typeof TODOS_LOCAL_BRIDGE_KIND;
|
|
37
|
+
exportedAt: string;
|
|
38
|
+
package: TodosLocalBridgePackageSource;
|
|
39
|
+
source: TodosLocalBridgeSource;
|
|
40
|
+
data: TodosLocalBridgeData;
|
|
41
|
+
artifact_contents?: ExportedArtifactContent[];
|
|
42
|
+
stats: Record<keyof TodosLocalBridgeData, number>;
|
|
43
|
+
}
|
|
44
|
+
export interface ExportLocalBridgeOptions {
|
|
45
|
+
project_id?: string;
|
|
46
|
+
generatedAt?: string;
|
|
47
|
+
version?: string;
|
|
48
|
+
}
|
|
49
|
+
export interface LocalBridgeValidationResult {
|
|
50
|
+
ok: boolean;
|
|
51
|
+
issues: string[];
|
|
52
|
+
}
|
|
53
|
+
export interface LocalBridgeImportConflict {
|
|
54
|
+
table: string;
|
|
55
|
+
id: string;
|
|
56
|
+
reason: "already_exists" | "missing_dependency" | "diverged";
|
|
57
|
+
fields?: string[];
|
|
58
|
+
resolution?: "skipped" | "safe_merged" | "manual_required";
|
|
59
|
+
}
|
|
60
|
+
export interface LocalBridgeImportResult {
|
|
61
|
+
ok: boolean;
|
|
62
|
+
dry_run: boolean;
|
|
63
|
+
inserted: Record<keyof TodosLocalBridgeData, number>;
|
|
64
|
+
merged: Record<keyof TodosLocalBridgeData, number>;
|
|
65
|
+
skipped: Record<keyof TodosLocalBridgeData, number>;
|
|
66
|
+
conflicts: LocalBridgeImportConflict[];
|
|
67
|
+
issues: string[];
|
|
68
|
+
}
|
|
69
|
+
export type LocalBridgeConflictStrategy = "skip" | "safe_merge";
|
|
70
|
+
export interface ImportLocalBridgeOptions {
|
|
71
|
+
dryRun?: boolean;
|
|
72
|
+
conflictStrategy?: LocalBridgeConflictStrategy;
|
|
73
|
+
}
|
|
74
|
+
export declare function createLocalBridgeBundle(options?: ExportLocalBridgeOptions, db?: Database): TodosLocalBridgeBundle;
|
|
75
|
+
export declare function validateLocalBridgeBundle(value: unknown): LocalBridgeValidationResult;
|
|
76
|
+
export declare function importLocalBridgeBundle(bundle: TodosLocalBridgeBundle, options?: ImportLocalBridgeOptions, db?: Database): LocalBridgeImportResult;
|
|
77
|
+
//# sourceMappingURL=local-bridge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-bridge.d.ts","sourceRoot":"","sources":["../../src/lib/local-bridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { type LocalEncryptionProfileConfig } from "./config.js";
|
|
2
|
+
export declare const TODOS_ENCRYPTED_VALUE_KIND = "hasna.todos.encrypted-value";
|
|
3
|
+
export declare const TODOS_ENCRYPTED_BRIDGE_KIND = "hasna.todos.encrypted-bridge";
|
|
4
|
+
export declare const TODOS_ENCRYPTION_SCHEMA_VERSION = 1;
|
|
5
|
+
export declare const DEFAULT_ENCRYPTION_PROFILE = "default";
|
|
6
|
+
export declare const DEFAULT_ENCRYPTION_KEY_ENV = "TODOS_ENCRYPTION_KEY";
|
|
7
|
+
export interface LocalEncryptionEnvelope {
|
|
8
|
+
schemaVersion: typeof TODOS_ENCRYPTION_SCHEMA_VERSION;
|
|
9
|
+
kind: typeof TODOS_ENCRYPTED_VALUE_KIND;
|
|
10
|
+
encryptedAt: string;
|
|
11
|
+
profile: string;
|
|
12
|
+
key_env: string;
|
|
13
|
+
algorithm: "aes-256-gcm";
|
|
14
|
+
kdf: "scrypt";
|
|
15
|
+
salt: string;
|
|
16
|
+
iv: string;
|
|
17
|
+
auth_tag: string;
|
|
18
|
+
ciphertext: string;
|
|
19
|
+
plaintext_sha256: string;
|
|
20
|
+
}
|
|
21
|
+
export interface EncryptedLocalBridgeBundle {
|
|
22
|
+
schemaVersion: typeof TODOS_ENCRYPTION_SCHEMA_VERSION;
|
|
23
|
+
kind: typeof TODOS_ENCRYPTED_BRIDGE_KIND;
|
|
24
|
+
encryptedAt: string;
|
|
25
|
+
package: {
|
|
26
|
+
packageName: "@hasna/todos";
|
|
27
|
+
repository: "hasna/todos";
|
|
28
|
+
version: string;
|
|
29
|
+
};
|
|
30
|
+
plaintext: {
|
|
31
|
+
kind: string;
|
|
32
|
+
schemaVersion: number;
|
|
33
|
+
sha256: string;
|
|
34
|
+
};
|
|
35
|
+
encryption: Omit<LocalEncryptionEnvelope, "schemaVersion" | "kind" | "encryptedAt" | "plaintext_sha256">;
|
|
36
|
+
warnings: string[];
|
|
37
|
+
}
|
|
38
|
+
export interface UpsertEncryptionProfileInput {
|
|
39
|
+
name: string;
|
|
40
|
+
key_env?: string;
|
|
41
|
+
description?: string;
|
|
42
|
+
salt?: string;
|
|
43
|
+
}
|
|
44
|
+
export declare class EncryptionKeyUnavailableError extends Error {
|
|
45
|
+
readonly keyEnv: string;
|
|
46
|
+
readonly profile: string;
|
|
47
|
+
constructor(keyEnv: string, profile: string);
|
|
48
|
+
}
|
|
49
|
+
export declare class EncryptedPayloadError extends Error {
|
|
50
|
+
constructor(message: string);
|
|
51
|
+
}
|
|
52
|
+
export declare function ensureEncryptionProfile(name?: string): LocalEncryptionProfileConfig;
|
|
53
|
+
export declare function listEncryptionProfiles(): LocalEncryptionProfileConfig[];
|
|
54
|
+
export declare function upsertEncryptionProfile(input: UpsertEncryptionProfileInput): LocalEncryptionProfileConfig;
|
|
55
|
+
export declare function removeEncryptionProfile(name: string): boolean;
|
|
56
|
+
export declare function encryptionProfileStatus(name?: string, env?: NodeJS.ProcessEnv): {
|
|
57
|
+
profile: LocalEncryptionProfileConfig;
|
|
58
|
+
locked: boolean;
|
|
59
|
+
key_env: string;
|
|
60
|
+
key_present: boolean;
|
|
61
|
+
};
|
|
62
|
+
export declare function encryptString(plaintext: string, options?: {
|
|
63
|
+
profile?: string;
|
|
64
|
+
env?: NodeJS.ProcessEnv;
|
|
65
|
+
encryptedAt?: string;
|
|
66
|
+
}): LocalEncryptionEnvelope;
|
|
67
|
+
export declare function isEncryptedValue(value: unknown): value is LocalEncryptionEnvelope;
|
|
68
|
+
export declare function decryptString(envelope: LocalEncryptionEnvelope, env?: NodeJS.ProcessEnv): string;
|
|
69
|
+
export declare function encryptValue(value: unknown, options?: {
|
|
70
|
+
profile?: string;
|
|
71
|
+
env?: NodeJS.ProcessEnv;
|
|
72
|
+
}): LocalEncryptionEnvelope;
|
|
73
|
+
export declare function decryptValue<T = unknown>(envelope: LocalEncryptionEnvelope, env?: NodeJS.ProcessEnv): T;
|
|
74
|
+
export declare function looksSensitiveKey(key: string): boolean;
|
|
75
|
+
export declare function encryptSensitiveFields(value: unknown, options?: {
|
|
76
|
+
profile?: string;
|
|
77
|
+
env?: NodeJS.ProcessEnv;
|
|
78
|
+
}): unknown;
|
|
79
|
+
export declare function createEncryptedBridgeBundle(bundle: {
|
|
80
|
+
kind: string;
|
|
81
|
+
schemaVersion: number;
|
|
82
|
+
package: {
|
|
83
|
+
packageName: "@hasna/todos";
|
|
84
|
+
repository: "hasna/todos";
|
|
85
|
+
version: string;
|
|
86
|
+
};
|
|
87
|
+
}, options?: {
|
|
88
|
+
profile?: string;
|
|
89
|
+
env?: NodeJS.ProcessEnv;
|
|
90
|
+
encryptedAt?: string;
|
|
91
|
+
}): EncryptedLocalBridgeBundle;
|
|
92
|
+
export declare function isEncryptedBridgeBundle(value: unknown): value is EncryptedLocalBridgeBundle;
|
|
93
|
+
export declare function decryptBridgeBundle<T>(bundle: EncryptedLocalBridgeBundle, env?: NodeJS.ProcessEnv): T;
|
|
94
|
+
//# sourceMappingURL=local-encryption.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-encryption.d.ts","sourceRoot":"","sources":["../../src/lib/local-encryption.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { Database } from "bun:sqlite";
|
|
2
|
+
import type { Task, TaskPriority } from "../types/index.js";
|
|
3
|
+
export type LocalTaskSeverity = "s0" | "s1" | "s2" | "s3" | "s4" | string;
|
|
4
|
+
export interface LocalTaskFields {
|
|
5
|
+
labels: string[];
|
|
6
|
+
priority: TaskPriority;
|
|
7
|
+
severity: LocalTaskSeverity | null;
|
|
8
|
+
owner: string | null;
|
|
9
|
+
area: string | null;
|
|
10
|
+
custom: Record<string, unknown>;
|
|
11
|
+
}
|
|
12
|
+
export interface SetTaskLocalFieldsInput {
|
|
13
|
+
labels?: string[];
|
|
14
|
+
priority?: TaskPriority;
|
|
15
|
+
severity?: LocalTaskSeverity | null;
|
|
16
|
+
owner?: string | null;
|
|
17
|
+
area?: string | null;
|
|
18
|
+
custom?: Record<string, unknown>;
|
|
19
|
+
merge_custom?: boolean;
|
|
20
|
+
}
|
|
21
|
+
export interface LocalTaskFieldQuery {
|
|
22
|
+
labels?: string[];
|
|
23
|
+
priority?: TaskPriority | TaskPriority[];
|
|
24
|
+
severity?: LocalTaskSeverity;
|
|
25
|
+
owner?: string;
|
|
26
|
+
area?: string;
|
|
27
|
+
custom?: Record<string, unknown>;
|
|
28
|
+
limit?: number;
|
|
29
|
+
}
|
|
30
|
+
export declare function getTaskLocalFields(taskId: string, db?: Database): LocalTaskFields;
|
|
31
|
+
export declare function setTaskLocalFields(taskId: string, input: SetTaskLocalFieldsInput, db?: Database): Task;
|
|
32
|
+
export declare function queryTasksByLocalFields(query: LocalTaskFieldQuery, db?: Database): Task[];
|
|
33
|
+
//# sourceMappingURL=local-fields.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-fields.d.ts","sourceRoot":"","sources":["../../src/lib/local-fields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAI3C,OAAO,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAI5D,MAAM,MAAM,iBAAiB,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC;AAE1E,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,YAAY,CAAC;IACvB,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACnC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,uBAAuB;IACtC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,QAAQ,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACpC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,YAAY,GAAG,YAAY,EAAE,CAAC;IACzC,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAqBD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,eAAe,CAajF;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,uBAAuB,EAC9B,EAAE,CAAC,EAAE,QAAQ,GACZ,IAAI,CA+BN;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,mBAAmB,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,IAAI,EAAE,CAqBzF"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import type { Database } from "bun:sqlite";
|
|
2
|
+
import type { TaskStatus } from "../types/index.js";
|
|
3
|
+
import { type PolicyPackConfig } from "./config.js";
|
|
4
|
+
export interface UpsertPolicyPackInput {
|
|
5
|
+
name: string;
|
|
6
|
+
root?: string;
|
|
7
|
+
version?: number;
|
|
8
|
+
required_commands?: string[];
|
|
9
|
+
prohibited_commands?: string[];
|
|
10
|
+
prohibited_paths?: string[];
|
|
11
|
+
required_statuses?: string[];
|
|
12
|
+
require_passed_verification?: boolean;
|
|
13
|
+
require_commit?: boolean;
|
|
14
|
+
require_pull_request?: boolean;
|
|
15
|
+
require_approval?: boolean;
|
|
16
|
+
require_run?: boolean;
|
|
17
|
+
require_artifact?: boolean;
|
|
18
|
+
evidence_min_count?: number;
|
|
19
|
+
branch_pattern?: string;
|
|
20
|
+
}
|
|
21
|
+
export interface ValidatePolicyPackInput {
|
|
22
|
+
name: string;
|
|
23
|
+
task_id: string;
|
|
24
|
+
root?: string;
|
|
25
|
+
explain?: boolean;
|
|
26
|
+
}
|
|
27
|
+
export type PolicyFindingStatus = "pass" | "fail";
|
|
28
|
+
export type PolicyFindingSeverity = "info" | "error";
|
|
29
|
+
export interface PolicyPackFinding {
|
|
30
|
+
id: string;
|
|
31
|
+
status: PolicyFindingStatus;
|
|
32
|
+
severity: PolicyFindingSeverity;
|
|
33
|
+
message: string;
|
|
34
|
+
evidence: string[];
|
|
35
|
+
}
|
|
36
|
+
export interface PolicyEvidenceSummary {
|
|
37
|
+
task: {
|
|
38
|
+
id: string;
|
|
39
|
+
title: string;
|
|
40
|
+
status: TaskStatus;
|
|
41
|
+
requires_approval: boolean;
|
|
42
|
+
approved_by: string | null;
|
|
43
|
+
approved_at: string | null;
|
|
44
|
+
};
|
|
45
|
+
verifications: Array<{
|
|
46
|
+
command: string;
|
|
47
|
+
status: string;
|
|
48
|
+
artifact_path: string | null;
|
|
49
|
+
}>;
|
|
50
|
+
commits: Array<{
|
|
51
|
+
sha: string;
|
|
52
|
+
files_changed: string[];
|
|
53
|
+
}>;
|
|
54
|
+
git_refs: Array<{
|
|
55
|
+
ref_type: string;
|
|
56
|
+
name: string;
|
|
57
|
+
url: string | null;
|
|
58
|
+
}>;
|
|
59
|
+
runs: Array<{
|
|
60
|
+
id: string;
|
|
61
|
+
status: string;
|
|
62
|
+
title: string | null;
|
|
63
|
+
}>;
|
|
64
|
+
run_commands: Array<{
|
|
65
|
+
command: string;
|
|
66
|
+
status: string;
|
|
67
|
+
artifact_path: string | null;
|
|
68
|
+
}>;
|
|
69
|
+
artifacts: string[];
|
|
70
|
+
files: string[];
|
|
71
|
+
evidence_count: number;
|
|
72
|
+
}
|
|
73
|
+
export interface PolicyPackValidationResult {
|
|
74
|
+
pack: PolicyPackConfig;
|
|
75
|
+
task_id: string;
|
|
76
|
+
mode: "validate" | "explain";
|
|
77
|
+
passed: boolean;
|
|
78
|
+
findings: PolicyPackFinding[];
|
|
79
|
+
audit_evidence: PolicyEvidenceSummary;
|
|
80
|
+
}
|
|
81
|
+
export declare function listPolicyPacks(): PolicyPackConfig[];
|
|
82
|
+
export declare function getPolicyPack(name: string): PolicyPackConfig | null;
|
|
83
|
+
export declare function upsertPolicyPack(input: UpsertPolicyPackInput): PolicyPackConfig;
|
|
84
|
+
export declare function removePolicyPack(name: string): boolean;
|
|
85
|
+
export declare function validatePolicyPack(input: ValidatePolicyPackInput, db?: Database): PolicyPackValidationResult;
|
|
86
|
+
export declare function explainPolicyPack(input: Omit<ValidatePolicyPackInput, "explain">, db?: Database): PolicyPackValidationResult;
|
|
87
|
+
//# sourceMappingURL=policy-packs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"policy-packs.d.ts","sourceRoot":"","sources":["../../src/lib/policy-packs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { Database } from "bun:sqlite";
|
|
2
|
+
import type { Project, ProjectSource, TaskList } from "../types/index.js";
|
|
3
|
+
export interface ProjectBootstrapOptions {
|
|
4
|
+
path?: string;
|
|
5
|
+
name?: string;
|
|
6
|
+
taskListSlug?: string;
|
|
7
|
+
dryRun?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export interface ProjectWorkspaceDiscovery {
|
|
10
|
+
inputPath: string;
|
|
11
|
+
projectPath: string;
|
|
12
|
+
projectName: string;
|
|
13
|
+
gitRoot: string | null;
|
|
14
|
+
packageRoot: string | null;
|
|
15
|
+
packageName: string | null;
|
|
16
|
+
workspaceRoot: string | null;
|
|
17
|
+
workspaceKind: string | null;
|
|
18
|
+
monorepo: boolean;
|
|
19
|
+
markers: string[];
|
|
20
|
+
}
|
|
21
|
+
export interface ProjectBootstrapResult {
|
|
22
|
+
dryRun: boolean;
|
|
23
|
+
discovery: ProjectWorkspaceDiscovery;
|
|
24
|
+
project: Project | null;
|
|
25
|
+
taskList: TaskList | null;
|
|
26
|
+
sources: ProjectSource[];
|
|
27
|
+
created: {
|
|
28
|
+
project: boolean;
|
|
29
|
+
taskList: boolean;
|
|
30
|
+
sources: string[];
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
export declare function discoverProjectWorkspace(inputPath?: string): ProjectWorkspaceDiscovery;
|
|
34
|
+
export declare function bootstrapProject(options?: ProjectBootstrapOptions, db?: Database): ProjectBootstrapResult;
|
|
35
|
+
//# sourceMappingURL=project-bootstrap.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-bootstrap.d.ts","sourceRoot":"","sources":["../../src/lib/project-bootstrap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAa3C,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE1E,MAAM,WAAW,uBAAuB;IACtC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,yBAAyB;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,yBAAyB,CAAC;IACrC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC1B,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,OAAO,EAAE;QACP,OAAO,EAAE,OAAO,CAAC;QACjB,QAAQ,EAAE,OAAO,CAAC;QAClB,OAAO,EAAE,MAAM,EAAE,CAAC;KACnB,CAAC;CACH;AA6DD,wBAAgB,wBAAwB,CAAC,SAAS,SAAgB,GAAG,yBAAyB,CAuB7F;AAkBD,wBAAgB,gBAAgB,CAAC,OAAO,GAAE,uBAA4B,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,sBAAsB,CA2D7G"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
export type PackageJson = {
|
|
2
|
+
name?: string;
|
|
3
|
+
version?: string;
|
|
4
|
+
license?: string;
|
|
5
|
+
main?: string;
|
|
6
|
+
types?: string;
|
|
7
|
+
bin?: Record<string, string>;
|
|
8
|
+
exports?: Record<string, unknown>;
|
|
9
|
+
files?: string[];
|
|
10
|
+
workspaces?: string[];
|
|
11
|
+
publishConfig?: {
|
|
12
|
+
registry?: string;
|
|
13
|
+
access?: string;
|
|
14
|
+
};
|
|
15
|
+
repository?: {
|
|
16
|
+
type?: string;
|
|
17
|
+
url?: string;
|
|
18
|
+
directory?: string;
|
|
19
|
+
};
|
|
20
|
+
homepage?: string;
|
|
21
|
+
bugs?: {
|
|
22
|
+
url?: string;
|
|
23
|
+
};
|
|
24
|
+
dependencies?: Record<string, string>;
|
|
25
|
+
devDependencies?: Record<string, string>;
|
|
26
|
+
gitHead?: string;
|
|
27
|
+
};
|
|
28
|
+
export type TextFile = {
|
|
29
|
+
path: string;
|
|
30
|
+
text: string;
|
|
31
|
+
};
|
|
32
|
+
export type ReleaseGateFailure = {
|
|
33
|
+
check: string;
|
|
34
|
+
message: string;
|
|
35
|
+
};
|
|
36
|
+
export type ReleaseProvenance = {
|
|
37
|
+
packageName?: string;
|
|
38
|
+
packageVersion?: string;
|
|
39
|
+
repository?: string;
|
|
40
|
+
gitCommit?: string;
|
|
41
|
+
generatedAt?: string;
|
|
42
|
+
};
|
|
43
|
+
export declare function validateRootPackageMetadata(packageJson: PackageJson): ReleaseGateFailure[];
|
|
44
|
+
export declare function validateSdkPackageMetadata(packageJson: PackageJson): ReleaseGateFailure[];
|
|
45
|
+
export declare function validatePublicTextSurfaces(files: TextFile[]): ReleaseGateFailure[];
|
|
46
|
+
export declare function validatePackedPackageFiles(paths: string[]): ReleaseGateFailure[];
|
|
47
|
+
export declare function validatePackedProvenanceMetadata(packageJson: PackageJson): ReleaseGateFailure[];
|
|
48
|
+
export declare function validateReleaseProvenanceMetadata(provenance: ReleaseProvenance, packageJson: PackageJson): ReleaseGateFailure[];
|
|
49
|
+
export declare function validateNpmView(packageName: string, rawJson: string): ReleaseGateFailure[];
|
|
50
|
+
//# sourceMappingURL=public-release-gate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"public-release-gate.d.ts","sourceRoot":"","sources":["../../src/lib/public-release-gate.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,aAAa,CAAC,EAAE;QACd,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,UAAU,CAAC,EAAE;QACX,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE;QACL,GAAG,CAAC,EAAE,MAAM,CAAC;KACd,CAAC;IACF,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAwCF,wBAAgB,2BAA2B,CAAC,WAAW,EAAE,WAAW,GAAG,kBAAkB,EAAE,CAgD1F;AAED,wBAAgB,0BAA0B,CAAC,WAAW,EAAE,WAAW,GAAG,kBAAkB,EAAE,CAQzF;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,kBAAkB,EAAE,CAoBlF;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,kBAAkB,EAAE,CAyBhF;AAED,wBAAgB,gCAAgC,CAAC,WAAW,EAAE,WAAW,GAAG,kBAAkB,EAAE,CAE/F;AAED,wBAAgB,iCAAiC,CAC/C,UAAU,EAAE,iBAAiB,EAC7B,WAAW,EAAE,WAAW,GACvB,kBAAkB,EAAE,CAiCtB;AAED,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,kBAAkB,EAAE,CAiB1F"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redaction.d.ts","sourceRoot":"","sources":["../../src/lib/redaction.ts"],"names":[],"mappings":"AAAA,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAOxD;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAe1C"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { type RunnerSandboxNetworkPolicy, type RunnerSandboxProfile } from "./config.js";
|
|
2
|
+
export interface UpsertRunnerSandboxInput {
|
|
3
|
+
name: string;
|
|
4
|
+
root?: string;
|
|
5
|
+
command_allowlist?: string[];
|
|
6
|
+
command_denylist?: string[];
|
|
7
|
+
cwd_boundary?: string;
|
|
8
|
+
write_scopes?: string[];
|
|
9
|
+
env_allowlist?: string[];
|
|
10
|
+
env_redactions?: string[];
|
|
11
|
+
network_policy?: RunnerSandboxNetworkPolicy;
|
|
12
|
+
require_approval?: boolean;
|
|
13
|
+
audit_evidence?: boolean;
|
|
14
|
+
}
|
|
15
|
+
export interface RunnerSandboxCheckInput {
|
|
16
|
+
name?: string;
|
|
17
|
+
path?: string;
|
|
18
|
+
cwd?: string;
|
|
19
|
+
command?: string;
|
|
20
|
+
write_paths?: string[];
|
|
21
|
+
env?: Record<string, string | undefined>;
|
|
22
|
+
network?: boolean;
|
|
23
|
+
}
|
|
24
|
+
export interface RunnerSandboxCheck {
|
|
25
|
+
allowed: boolean;
|
|
26
|
+
requires_approval: boolean;
|
|
27
|
+
reasons: string[];
|
|
28
|
+
profile: RunnerSandboxProfile;
|
|
29
|
+
redacted_env_keys: string[];
|
|
30
|
+
omitted_env_keys: string[];
|
|
31
|
+
effective_env_keys: string[];
|
|
32
|
+
audit_evidence: {
|
|
33
|
+
sandbox: string;
|
|
34
|
+
root: string;
|
|
35
|
+
cwd: string;
|
|
36
|
+
command?: string;
|
|
37
|
+
write_paths: string[];
|
|
38
|
+
network_requested: boolean;
|
|
39
|
+
network_policy: RunnerSandboxNetworkPolicy;
|
|
40
|
+
allowed: boolean;
|
|
41
|
+
reasons: string[];
|
|
42
|
+
} | null;
|
|
43
|
+
}
|
|
44
|
+
export declare function listRunnerSandboxProfiles(): RunnerSandboxProfile[];
|
|
45
|
+
export declare function getRunnerSandboxProfile(name: string, path?: string): RunnerSandboxProfile;
|
|
46
|
+
export declare function upsertRunnerSandboxProfile(input: UpsertRunnerSandboxInput): RunnerSandboxProfile;
|
|
47
|
+
export declare function removeRunnerSandboxProfile(name: string): boolean;
|
|
48
|
+
export declare function checkRunnerSandbox(input?: RunnerSandboxCheckInput): RunnerSandboxCheck;
|
|
49
|
+
export declare function explainRunnerSandbox(input?: RunnerSandboxCheckInput): RunnerSandboxCheck;
|
|
50
|
+
//# sourceMappingURL=runner-sandbox.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runner-sandbox.d.ts","sourceRoot":"","sources":["../../src/lib/runner-sandbox.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,0BAA0B,EAC/B,KAAK,oBAAoB,EAE1B,MAAM,aAAa,CAAC;AAGrB,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,cAAc,CAAC,EAAE,0BAA0B,CAAC;IAC5C,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IACzC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,oBAAoB,CAAC;IAC9B,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,cAAc,EAAE;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;QACZ,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,WAAW,EAAE,MAAM,EAAE,CAAC;QACtB,iBAAiB,EAAE,OAAO,CAAC;QAC3B,cAAc,EAAE,0BAA0B,CAAC;QAC3C,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,EAAE,MAAM,EAAE,CAAC;KACnB,GAAG,IAAI,CAAC;CACV;AA0FD,wBAAgB,yBAAyB,IAAI,oBAAoB,EAAE,CAElE;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,SAAgB,GAAG,oBAAoB,CAEhG;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,wBAAwB,GAAG,oBAAoB,CA8BhG;AAED,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAOhE;AAED,wBAAgB,kBAAkB,CAAC,KAAK,GAAE,uBAA4B,GAAG,kBAAkB,CA0D1F;AAED,wBAAgB,oBAAoB,CAAC,KAAK,GAAE,uBAA4B,GAAG,kBAAkB,CAE5F"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import type { Database } from "bun:sqlite";
|
|
2
|
+
export type TaskRiskLevel = "low" | "medium" | "high" | "critical";
|
|
3
|
+
export type TaskReviewState = "none" | "requested" | "approved" | "changes_requested" | "reopened";
|
|
4
|
+
export type RecordableTaskReviewState = Exclude<TaskReviewState, "none" | "requested">;
|
|
5
|
+
export interface SetTaskContractInput {
|
|
6
|
+
task_id: string;
|
|
7
|
+
acceptance_criteria?: string[];
|
|
8
|
+
verification_commands?: string[];
|
|
9
|
+
expected_artifacts?: string[];
|
|
10
|
+
relevant_files?: string[];
|
|
11
|
+
risk_level?: TaskRiskLevel;
|
|
12
|
+
done_definition?: string[];
|
|
13
|
+
}
|
|
14
|
+
export interface TaskContract {
|
|
15
|
+
task_id: string;
|
|
16
|
+
acceptance_criteria: string[];
|
|
17
|
+
verification_commands: string[];
|
|
18
|
+
expected_artifacts: string[];
|
|
19
|
+
relevant_files: string[];
|
|
20
|
+
risk_level: TaskRiskLevel | null;
|
|
21
|
+
done_definition: string[];
|
|
22
|
+
updated_at: string;
|
|
23
|
+
}
|
|
24
|
+
export interface RequestTaskReviewInput {
|
|
25
|
+
task_id: string;
|
|
26
|
+
requester: string;
|
|
27
|
+
reviewer?: string;
|
|
28
|
+
notes?: string;
|
|
29
|
+
}
|
|
30
|
+
export interface RecordTaskReviewInput {
|
|
31
|
+
task_id: string;
|
|
32
|
+
state: RecordableTaskReviewState;
|
|
33
|
+
reviewer: string;
|
|
34
|
+
notes?: string;
|
|
35
|
+
changes_requested?: string[];
|
|
36
|
+
}
|
|
37
|
+
export interface TaskReviewHistoryEntry {
|
|
38
|
+
state: Exclude<TaskReviewState, "none">;
|
|
39
|
+
actor: string;
|
|
40
|
+
notes: string | null;
|
|
41
|
+
changes_requested: string[];
|
|
42
|
+
at: string;
|
|
43
|
+
}
|
|
44
|
+
export interface TaskReview {
|
|
45
|
+
task_id: string;
|
|
46
|
+
state: TaskReviewState;
|
|
47
|
+
requester: string | null;
|
|
48
|
+
reviewer: string | null;
|
|
49
|
+
notes: string | null;
|
|
50
|
+
changes_requested: string[];
|
|
51
|
+
requested_at: string | null;
|
|
52
|
+
reviewed_at: string | null;
|
|
53
|
+
history: TaskReviewHistoryEntry[];
|
|
54
|
+
}
|
|
55
|
+
export interface TaskDoneContractResult {
|
|
56
|
+
ok: boolean;
|
|
57
|
+
task_id: string;
|
|
58
|
+
missing: string[];
|
|
59
|
+
contract: TaskContract;
|
|
60
|
+
review: TaskReview;
|
|
61
|
+
evidence: {
|
|
62
|
+
task_status: string;
|
|
63
|
+
acceptance_criteria: number;
|
|
64
|
+
passed_verifications: string[];
|
|
65
|
+
artifacts: string[];
|
|
66
|
+
review_state: TaskReviewState;
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
export declare function setTaskContract(input: SetTaskContractInput, db?: Database): TaskContract;
|
|
70
|
+
export declare function getTaskContract(taskId: string, db?: Database): TaskContract | null;
|
|
71
|
+
export declare function requestTaskReview(input: RequestTaskReviewInput, db?: Database): TaskReview;
|
|
72
|
+
export declare function recordTaskReview(input: RecordTaskReviewInput, db?: Database): TaskReview;
|
|
73
|
+
export declare function getTaskReview(taskId: string, db?: Database): TaskReview | null;
|
|
74
|
+
export declare function checkTaskDoneContract(taskId: string, db?: Database): TaskDoneContractResult;
|
|
75
|
+
//# sourceMappingURL=task-contracts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-contracts.d.ts","sourceRoot":"","sources":["../../src/lib/task-contracts.ts"],"names":[],"mappings":"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"}
|