chore(deno): migrate toolchain from Node 24 + pnpm to Deno 2.9.7 + TypeScript 7.0.2 (W1.5)
- root deno.json workspace (nodeModulesDir auto), npm versions registered once in imports, deno.lock; remove pnpm-lock/pnpm-workspace/root package.json; members keep minimal package.json (name/type/exports) - tasks: dev, typecheck (tsc 7.0.2 per member + deno check), lint/fmt (biome, useImportExtensions), test (vitest via deno), check:tokens, build (web + deno compile), ci, db:migrate/reset, gen:types - tsconfig base moved to config/ (no root tsconfig.json); deno types -> types/deno.d.ts; web drops baseUrl - server: Deno.serve entry with graceful shutdown, --role migrate|preflight|probe, WEB_ROOT static SPA hosting; drop @hono/node-server, tsx, esbuild build.mjs - logger: redact child() bindings and serialize err by message/stack; sync stdout destination; tests - relative imports get explicit extensions (sites/mp-sync paths left for follow-up) - crash-recovery tests spawn `deno run -A`; tasks tests use unique per-file schemas - single-container Dockerfile + entrypoint (migrate -> preflight -> api+worker watchdog), docker-compose.yml - docs: README, runbook, ADR-001 superseded, plan §1 validation row Co-Authored-By: Claude Fable 5.1 <[email protected]>
This commit is contained in:
1 parent
d9f2af2f3c
commit
304feea141
226 files changed
+6601
-8620
No files matched your search
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"name": "@umt/agent",
|
||||
"version": "0.0.0",
|
||||
"exports": { ".": "./src/index.ts" },
|
||||
"tasks": {
|
||||
"test": "deno run -A npm:vitest run",
|
||||
"typecheck": "deno run -A npm:typescript/tsc --noEmit -p tsconfig.json"
|
||||
}
|
||||
}
|
||||
@@ -1,20 +1,8 @@
|
||||
{
|
||||
"name": "@umt/agent",
|
||||
"version": "0.0.0",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"exports": {
|
||||
".": "./src/index.ts"
|
||||
},
|
||||
"scripts": {
|
||||
"typecheck": "tsc -p tsconfig.json",
|
||||
"test": "vitest run"
|
||||
},
|
||||
"dependencies": {
|
||||
"@earendil-works/pi-agent-core": "0.87.1",
|
||||
"@earendil-works/pi-ai": "0.87.1",
|
||||
"@umt/contracts": "workspace:*",
|
||||
"typebox": "1.3.27",
|
||||
"zod": "^4.6.5"
|
||||
}
|
||||
}
|
||||
@@ -1,8 +1,8 @@
|
||||
import { createHash } from "node:crypto";
|
||||
import { z } from "zod";
|
||||
import { summarizeForLog } from "../redact";
|
||||
import { CapabilityError, isCapabilityError } from "./errors";
|
||||
import { capabilityIdToToolName, isCapabilityId } from "./tool-name";
|
||||
import { summarizeForLog } from "../redact.ts";
|
||||
import { CapabilityError, isCapabilityError } from "./errors.ts";
|
||||
import { capabilityIdToToolName, isCapabilityId } from "./tool-name.ts";
|
||||
import {
|
||||
type AuditSink,
|
||||
type AuthorizationChecker,
|
||||
@@ -15,7 +15,7 @@ import {
|
||||
type HandlerContext,
|
||||
type IdempotencyKeyGenerator,
|
||||
type InvokeContext,
|
||||
} from "./types";
|
||||
} from "./types.ts";
|
||||
|
||||
export interface RegisteredCapability {
|
||||
descriptor: CapabilityDescriptor;
|
||||
|
||||
+11
-11
@@ -1,16 +1,16 @@
|
||||
// @umt/agent 公开入口。Pi SDK 类型只出现在 src/pi/*,这里只导出本包自有接口。
|
||||
export const PACKAGE_NAME = "@umt/agent";
|
||||
|
||||
export { CapabilityError, type CapabilityErrorCode, isCapabilityError } from "./capability/errors";
|
||||
export { CapabilityError, type CapabilityErrorCode, isCapabilityError } from "./capability/errors.ts";
|
||||
export {
|
||||
CapabilityRegistry,
|
||||
type CapabilityRegistryOptions,
|
||||
defaultIdempotencyKey,
|
||||
type RegisteredCapability,
|
||||
stableStringify,
|
||||
} from "./capability/registry";
|
||||
export { capabilityIdToToolName, isCapabilityId, toolNameToCapabilityId } from "./capability/tool-name";
|
||||
export * from "./capability/types";
|
||||
} from "./capability/registry.ts";
|
||||
export { capabilityIdToToolName, isCapabilityId, toolNameToCapabilityId } from "./capability/tool-name.ts";
|
||||
export * from "./capability/types.ts";
|
||||
export {
|
||||
type CreateFakeRuntimeOptions,
|
||||
createFakeRuntime,
|
||||
@@ -21,16 +21,16 @@ export {
|
||||
type FakeStep,
|
||||
type FakeToolCall,
|
||||
type FakeToolResult,
|
||||
} from "./pi/fake";
|
||||
} from "./pi/fake.ts";
|
||||
export {
|
||||
checkToolCall,
|
||||
DEFAULT_COMPACTION_INSTRUCTIONS,
|
||||
PiAgentRuntime,
|
||||
type PiAgentRuntimeOptions,
|
||||
} from "./pi/runtime";
|
||||
export { sessionPathFor } from "./pi/session";
|
||||
export { isSensitiveKey, REDACTED, redactForModel, redactString, summarizeForLog } from "./redact";
|
||||
export * from "./runtime/port";
|
||||
} from "./pi/runtime.ts";
|
||||
export { sessionPathFor } from "./pi/session.ts";
|
||||
export { isSensitiveKey, REDACTED, redactForModel, redactString, summarizeForLog } from "./redact.ts";
|
||||
export * from "./runtime/port.ts";
|
||||
export {
|
||||
type AgentSettings,
|
||||
AgentSettingsSchema,
|
||||
@@ -39,5 +39,5 @@ export {
|
||||
type ResolvedAgentSettings,
|
||||
resolveAgentSettings,
|
||||
THINKING_LEVELS,
|
||||
} from "./settings";
|
||||
export { buildSystemPrompt, type SystemPromptInput } from "./system-prompt";
|
||||
} from "./settings.ts";
|
||||
export { buildSystemPrompt, type SystemPromptInput } from "./system-prompt.ts";
|
||||
@@ -12,10 +12,10 @@ import {
|
||||
type Message,
|
||||
type TranscriptContext,
|
||||
} from "@earendil-works/pi-ai";
|
||||
import type { CapabilityRegistry } from "../capability/registry";
|
||||
import { capabilityIdToToolName, toolNameToCapabilityId } from "../capability/tool-name";
|
||||
import type { ResolvedPiModel } from "./model";
|
||||
import { PiAgentRuntime, type PiAgentRuntimeOptions } from "./runtime";
|
||||
import type { CapabilityRegistry } from "../capability/registry.ts";
|
||||
import { capabilityIdToToolName, toolNameToCapabilityId } from "../capability/tool-name.ts";
|
||||
import type { ResolvedPiModel } from "./model.ts";
|
||||
import { PiAgentRuntime, type PiAgentRuntimeOptions } from "./runtime.ts";
|
||||
|
||||
/** 前面各步工具调用的结果(按发生顺序),供脚本根据结果决定下一步 */
|
||||
export interface FakeToolResult {
|
||||
|
||||
@@ -2,7 +2,7 @@ import type { CompactionSettings } from "@earendil-works/pi-agent-core";
|
||||
import { type Api, createModels, createProvider, type Model, type MutableModels } from "@earendil-works/pi-ai";
|
||||
import { anthropicMessagesApi } from "@earendil-works/pi-ai/api/anthropic-messages.lazy";
|
||||
import { openAICompletionsApi } from "@earendil-works/pi-ai/api/openai-completions.lazy";
|
||||
import type { ResolvedAgentSettings } from "../settings";
|
||||
import type { ResolvedAgentSettings } from "../settings.ts";
|
||||
|
||||
/** Pi 侧需要的模型装配结果(仅在 src/pi/* 内部流转) */
|
||||
export interface ResolvedPiModel {
|
||||
|
||||
@@ -11,11 +11,11 @@ import {
|
||||
} from "@earendil-works/pi-agent-core";
|
||||
import type { Usage } from "@earendil-works/pi-ai";
|
||||
import type { TSchema } from "typebox";
|
||||
import { isCapabilityError } from "../capability/errors";
|
||||
import type { CapabilityRegistry, RegisteredCapability } from "../capability/registry";
|
||||
import { toolNameToCapabilityId } from "../capability/tool-name";
|
||||
import { redactForModel, redactString, summarizeForLog } from "../redact";
|
||||
import { EventChannel } from "../runtime/event-channel";
|
||||
import { isCapabilityError } from "../capability/errors.ts";
|
||||
import type { CapabilityRegistry, RegisteredCapability } from "../capability/registry.ts";
|
||||
import { toolNameToCapabilityId } from "../capability/tool-name.ts";
|
||||
import { redactForModel, redactString, summarizeForLog } from "../redact.ts";
|
||||
import { EventChannel } from "../runtime/event-channel.ts";
|
||||
import {
|
||||
type AgentEvent,
|
||||
type AgentEventBody,
|
||||
@@ -26,10 +26,10 @@ import {
|
||||
type CreateRunSpec,
|
||||
emptyUsage,
|
||||
type RunOutcome,
|
||||
} from "../runtime/port";
|
||||
import { type ResolvedAgentSettings, resolveAgentSettings } from "../settings";
|
||||
import { compactionFromSettings, type PiModelResolver, resolveModelFromSettings } from "./model";
|
||||
import { openRunSession } from "./session";
|
||||
} from "../runtime/port.ts";
|
||||
import { type ResolvedAgentSettings, resolveAgentSettings } from "../settings.ts";
|
||||
import { compactionFromSettings, type PiModelResolver, resolveModelFromSettings } from "./model.ts";
|
||||
import { openRunSession } from "./session.ts";
|
||||
|
||||
export interface PiAgentRuntimeOptions {
|
||||
registry: CapabilityRegistry;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import type { CapabilityScope } from "../capability/types";
|
||||
import type { AgentSettings } from "../settings";
|
||||
import type { CapabilityScope } from "../capability/types.ts";
|
||||
import type { AgentSettings } from "../settings.ts";
|
||||
|
||||
/** 本包对外的用量统计(与 SDK 类型解耦) */
|
||||
export interface AgentUsage {
|
||||
|
||||
+3
-3
@@ -1,7 +1,7 @@
|
||||
// 子进程:启动 run,download.submit 执行中挂起;父进程收到 SUBMIT_STARTED 后 SIGKILL 本进程。
|
||||
import { createFakeRuntime } from "../../src";
|
||||
import { makeFixture, settings } from "../helpers";
|
||||
import { crashScript, RUN_ID } from "./crash-script";
|
||||
import { createFakeRuntime } from "../../src/index.ts";
|
||||
import { makeFixture, settings } from "../helpers.ts";
|
||||
import { crashScript, RUN_ID } from "./crash-script.ts";
|
||||
|
||||
const sessionDir = process.argv[2]!;
|
||||
const fx = makeFixture({ slowMs: 60_000 });
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
import type { FakeScript } from "../../src";
|
||||
import type { FakeScript } from "../../src/index.ts";
|
||||
|
||||
export const RUN_ID = "run-crash-1";
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ import {
|
||||
CapabilityRegistry,
|
||||
FAKE_AGENT_SETTINGS,
|
||||
type InvokeContext,
|
||||
} from "../src";
|
||||
} from "../src/index.ts";
|
||||
|
||||
export interface Fixture {
|
||||
registry: CapabilityRegistry;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { describe, expect, it } from "vitest";
|
||||
import { buildSystemPrompt, REDACTED, redactForModel, redactString, summarizeForLog } from "../src";
|
||||
import { buildSystemPrompt, REDACTED, redactForModel, redactString, summarizeForLog } from "../src/index.ts";
|
||||
|
||||
describe("redactForModel", () => {
|
||||
it("遮蔽敏感键、含 passkey 的 URL、Bearer、请求头、URL 账号密码", () => {
|
||||
|
||||
@@ -6,8 +6,8 @@ import {
|
||||
capabilityIdToToolName,
|
||||
defaultIdempotencyKey,
|
||||
toolNameToCapabilityId,
|
||||
} from "../src";
|
||||
import { ctx, makeFixture } from "./helpers";
|
||||
} from "../src/index.ts";
|
||||
import { ctx, makeFixture } from "./helpers.ts";
|
||||
|
||||
describe("能力 ID ↔ 工具名", () => {
|
||||
it("双向映射且无歧义", () => {
|
||||
|
||||
@@ -9,9 +9,9 @@ import {
|
||||
checkToolCall,
|
||||
createFakeRuntime,
|
||||
type FakeScript,
|
||||
} from "../src";
|
||||
import { crashScript, RUN_ID } from "./fixtures/crash-script";
|
||||
import { type Fixture, makeFixture, settings, tempDir, types } from "./helpers";
|
||||
} from "../src/index.ts";
|
||||
import { crashScript, RUN_ID } from "./fixtures/crash-script.ts";
|
||||
import { type Fixture, makeFixture, settings, tempDir, types } from "./helpers.ts";
|
||||
|
||||
const opened: AgentRun[] = [];
|
||||
afterEach(async () => {
|
||||
@@ -276,10 +276,14 @@ describe("PiAgentRuntime + FakeModelProvider", () => {
|
||||
|
||||
it("JSONL 恢复:子进程在 download.submit 执行中被 SIGKILL,新进程 resume 得到“结果未知”且不重复提交", async () => {
|
||||
const sessionDir = await tempDir();
|
||||
const child = spawn(process.execPath, ["--import", "tsx", join(__dirname, "fixtures/crash-run.ts"), sessionDir], {
|
||||
cwd: join(__dirname, ".."),
|
||||
stdio: ["ignore", "pipe", "pipe"],
|
||||
});
|
||||
const child = spawn(
|
||||
process.execPath,
|
||||
["run", "-A", join(import.meta.dirname!, "fixtures/crash-run.ts"), sessionDir],
|
||||
{
|
||||
cwd: join(import.meta.dirname!, ".."),
|
||||
stdio: ["ignore", "pipe", "pipe"],
|
||||
},
|
||||
);
|
||||
let stderr = "";
|
||||
child.stderr.on("data", (d) => {
|
||||
stderr += String(d);
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { describe, expect, it } from "vitest";
|
||||
import { describeSettings, resolveAgentSettings } from "../src";
|
||||
import { compactionFromSettings, resolveModelFromSettings } from "../src/pi/model";
|
||||
import { describeSettings, resolveAgentSettings } from "../src/index.ts";
|
||||
import { compactionFromSettings, resolveModelFromSettings } from "../src/pi/model.ts";
|
||||
|
||||
describe("AgentSettings → pi-ai", () => {
|
||||
it("anthropic:baseUrl 去掉 /v1,上下文预算即 contextWindow,apiKey 只在 resolve 时给出", async () => {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
{
|
||||
"extends": "../../tsconfig.base.json",
|
||||
"extends": "../../config/tsconfig.base.json",
|
||||
"include": ["src", "test"]
|
||||
}
|
||||
Reference in new issue
Block a user