diff --git a/packages/kernel-agents-repl/CHANGELOG.md b/packages/kernel-agents-repl/CHANGELOG.md new file mode 100644 index 000000000..0c82cb1ed --- /dev/null +++ b/packages/kernel-agents-repl/CHANGELOG.md @@ -0,0 +1,10 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [Unreleased] + +[Unreleased]: https://github.com/MetaMask/ocap-kernel/ diff --git a/packages/kernel-agents-repl/README.md b/packages/kernel-agents-repl/README.md new file mode 100644 index 000000000..ef76b1914 --- /dev/null +++ b/packages/kernel-agents-repl/README.md @@ -0,0 +1,17 @@ +# `@ocap/kernel-agents-repl` + +REPL strategy for capability-enabled, language-model-flow-controlled programming. + +See the [strategies documentation](../kernel-agents/src/strategies/README.md) from `@ocap/kernel-agents` + +## Installation + +`yarn add @ocap/kernel-agents-repl` + +or + +`npm install @ocap/kernel-agents-repl` + +## Contributing + +This package is part of a monorepo. Instructions for contributing can be found in the [monorepo README](https://github.com/MetaMask/ocap-kernel#readme). diff --git a/packages/kernel-agents-repl/package.json b/packages/kernel-agents-repl/package.json new file mode 100644 index 000000000..d2acce21a --- /dev/null +++ b/packages/kernel-agents-repl/package.json @@ -0,0 +1,92 @@ +{ + "name": "@ocap/kernel-agents-repl", + "version": "0.0.0", + "private": true, + "description": "REPL strategy for capability-enabled, language-model-flow-controlled programming", + "homepage": "https://github.com/MetaMask/ocap-kernel/tree/main/packages/kernel-agents-repl#readme", + "bugs": { + "url": "https://github.com/MetaMask/ocap-kernel/issues" + }, + "repository": { + "type": "git", + "url": "https://github.com/MetaMask/ocap-kernel.git" + }, + "type": "module", + "exports": { + ".": { + "import": { + "types": "./dist/index.d.mts", + "default": "./dist/index.mjs" + }, + "require": { + "types": "./dist/index.d.cts", + "default": "./dist/index.cjs" + } + }, + "./package.json": "./package.json" + }, + "files": [ + "dist/" + ], + "scripts": { + "build": "ts-bridge --project tsconfig.build.json --no-references --clean", + "build:docs": "typedoc", + "changelog:validate": "../../scripts/validate-changelog.sh @ocap/kernel-agents-repl", + "clean": "rimraf --glob './*.tsbuildinfo' ./.eslintcache ./coverage ./dist ./.turbo", + "lint": "yarn lint:eslint && yarn lint:misc --check && yarn constraints && yarn lint:dependencies", + "lint:dependencies": "depcheck --quiet", + "lint:eslint": "eslint . --cache", + "lint:fix": "yarn lint:eslint --fix && yarn lint:misc --write && yarn constraints --fix && yarn lint:dependencies", + "lint:misc": "prettier --no-error-on-unmatched-pattern '**/*.json' '**/*.md' '**/*.html' '!**/CHANGELOG.old.md' '**/*.yml' '!.yarnrc.yml' '!merged-packages/**' --ignore-path ../../.gitignore --log-level error", + "publish:preview": "yarn npm publish --tag preview", + "test": "vitest run --config vitest.config.ts", + "test:clean": "yarn test --no-cache --coverage.clean", + "test:dev": "yarn test --mode development --reporter dot", + "test:verbose": "yarn test --reporter verbose", + "test:watch": "vitest --config vitest.config.ts" + }, + "devDependencies": { + "@arethetypeswrong/cli": "^0.17.4", + "@metamask/auto-changelog": "^5.3.0", + "@metamask/eslint-config": "^15.0.0", + "@metamask/eslint-config-nodejs": "^15.0.0", + "@metamask/eslint-config-typescript": "^15.0.0", + "@ocap/repo-tools": "workspace:^", + "@ts-bridge/cli": "^0.6.3", + "@ts-bridge/shims": "^0.1.1", + "@types/node": "^22.13.1", + "@typescript-eslint/eslint-plugin": "^8.29.0", + "@typescript-eslint/parser": "^8.29.0", + "@typescript-eslint/utils": "^8.29.0", + "@vitest/eslint-plugin": "^1.6.5", + "depcheck": "^1.4.7", + "eslint": "^9.23.0", + "eslint-config-prettier": "^10.1.1", + "eslint-import-resolver-typescript": "^4.3.1", + "eslint-plugin-import-x": "^4.10.0", + "eslint-plugin-jsdoc": "^50.6.9", + "eslint-plugin-n": "^17.17.0", + "eslint-plugin-prettier": "^5.2.6", + "eslint-plugin-promise": "^7.2.1", + "prettier": "^3.5.3", + "rimraf": "^6.0.1", + "turbo": "^2.5.6", + "typedoc": "^0.28.1", + "typescript": "~5.8.2", + "typescript-eslint": "^8.29.0", + "vite": "^7.3.0", + "vitest": "^4.0.16" + }, + "engines": { + "node": "^20.11 || >=22" + }, + "dependencies": { + "@metamask/kernel-errors": "workspace:^", + "@metamask/kernel-utils": "workspace:^", + "@metamask/logger": "workspace:^", + "@ocap/kernel-agents": "workspace:^", + "ses": "^1.14.0", + "tree-sitter": "^0.25.0", + "tree-sitter-javascript": "^0.25.0" + } +} diff --git a/packages/kernel-agents-repl/src/index.ts b/packages/kernel-agents-repl/src/index.ts new file mode 100644 index 000000000..9d7b5ba5b --- /dev/null +++ b/packages/kernel-agents-repl/src/index.ts @@ -0,0 +1,7 @@ +export { makeReplAgent } from './strategies/repl-agent.ts'; +export type { + State, + Action, + Observation, + ReplTranscript, +} from './strategies/repl/messages.ts'; diff --git a/packages/kernel-agents/src/strategies/repl-agent.ts b/packages/kernel-agents-repl/src/strategies/repl-agent.ts similarity index 73% rename from packages/kernel-agents/src/strategies/repl-agent.ts rename to packages/kernel-agents-repl/src/strategies/repl-agent.ts index c6e5972c7..aeb62e38d 100644 --- a/packages/kernel-agents/src/strategies/repl-agent.ts +++ b/packages/kernel-agents-repl/src/strategies/repl-agent.ts @@ -1,5 +1,6 @@ -import { makeAgent } from '../agent.ts'; -import type { Agent } from '../types.ts'; +import { makeAgent } from '@ocap/kernel-agents/agent'; +import type { Agent } from '@ocap/kernel-agents/types'; + import type { State, Action, Observation } from './repl/messages.ts'; import { prepareAttempt } from './repl/prepare-attempt.ts'; diff --git a/packages/kernel-agents/src/strategies/repl/README.md b/packages/kernel-agents-repl/src/strategies/repl/README.md similarity index 100% rename from packages/kernel-agents/src/strategies/repl/README.md rename to packages/kernel-agents-repl/src/strategies/repl/README.md diff --git a/packages/kernel-agents/src/strategies/repl/compartment.test.ts b/packages/kernel-agents-repl/src/strategies/repl/compartment.test.ts similarity index 100% rename from packages/kernel-agents/src/strategies/repl/compartment.test.ts rename to packages/kernel-agents-repl/src/strategies/repl/compartment.test.ts diff --git a/packages/kernel-agents/src/strategies/repl/compartment.ts b/packages/kernel-agents-repl/src/strategies/repl/compartment.ts similarity index 100% rename from packages/kernel-agents/src/strategies/repl/compartment.ts rename to packages/kernel-agents-repl/src/strategies/repl/compartment.ts diff --git a/packages/kernel-agents/src/strategies/repl/evaluator-error.test.ts b/packages/kernel-agents-repl/src/strategies/repl/evaluator-error.test.ts similarity index 100% rename from packages/kernel-agents/src/strategies/repl/evaluator-error.test.ts rename to packages/kernel-agents-repl/src/strategies/repl/evaluator-error.test.ts diff --git a/packages/kernel-agents/src/strategies/repl/evaluator-error.ts b/packages/kernel-agents-repl/src/strategies/repl/evaluator-error.ts similarity index 100% rename from packages/kernel-agents/src/strategies/repl/evaluator-error.ts rename to packages/kernel-agents-repl/src/strategies/repl/evaluator-error.ts diff --git a/packages/kernel-agents/src/strategies/repl/evaluator.test.ts b/packages/kernel-agents-repl/src/strategies/repl/evaluator.test.ts similarity index 100% rename from packages/kernel-agents/src/strategies/repl/evaluator.test.ts rename to packages/kernel-agents-repl/src/strategies/repl/evaluator.test.ts diff --git a/packages/kernel-agents/src/strategies/repl/evaluator.ts b/packages/kernel-agents-repl/src/strategies/repl/evaluator.ts similarity index 94% rename from packages/kernel-agents/src/strategies/repl/evaluator.ts rename to packages/kernel-agents-repl/src/strategies/repl/evaluator.ts index 78262de09..b75ea3427 100644 --- a/packages/kernel-agents/src/strategies/repl/evaluator.ts +++ b/packages/kernel-agents-repl/src/strategies/repl/evaluator.ts @@ -1,6 +1,9 @@ import { EvaluatorError } from '@metamask/kernel-errors'; import { mergeDisjointRecords } from '@metamask/kernel-utils'; import type { Logger } from '@metamask/logger'; +import { extractCapabilities } from '@ocap/kernel-agents/capabilities/capability'; +import type { CapabilityRecord } from '@ocap/kernel-agents/types'; +import { ifDefined } from '@ocap/kernel-agents/utils'; import { makeCompartment } from './compartment.ts'; import { processEvaluationError } from './evaluator-error.ts'; @@ -14,9 +17,6 @@ import type { ReplTranscript, StatementMessage } from './messages.ts'; import { prepareEvaluation } from './prepare-evaluation.ts'; import { ERROR, RETURN } from './symbols.ts'; import type { EvaluatorState } from './types.ts'; -import { extractCapabilities } from '../../capabilities/capability.ts'; -import type { CapabilityRecord } from '../../types.ts'; -import { ifDefined } from '../../utils.ts'; const validateStatement = ( statement: StatementMessage, diff --git a/packages/kernel-agents/src/strategies/repl/example-transcripts.ts b/packages/kernel-agents-repl/src/strategies/repl/example-transcripts.ts similarity index 96% rename from packages/kernel-agents/src/strategies/repl/example-transcripts.ts rename to packages/kernel-agents-repl/src/strategies/repl/example-transcripts.ts index fb21beaa7..fbaa2c080 100644 --- a/packages/kernel-agents/src/strategies/repl/example-transcripts.ts +++ b/packages/kernel-agents-repl/src/strategies/repl/example-transcripts.ts @@ -1,3 +1,9 @@ +import { extractCapabilitySchemas } from '@ocap/kernel-agents/capabilities/capability'; +import { end } from '@ocap/kernel-agents/capabilities/end'; +import { search } from '@ocap/kernel-agents/capabilities/examples'; +import type { CapabilityRecord } from '@ocap/kernel-agents/types'; + +import type { ReplTranscript } from './messages.ts'; import { CommentMessage, EvaluationMessage, @@ -5,12 +11,7 @@ import { InterjectionMessage, ResultMessage, } from './messages.ts'; -import type { ReplTranscript } from './messages.ts'; import { RETURN } from './symbols.ts'; -import { extractCapabilitySchemas } from '../../capabilities/capability.ts'; -import { end } from '../../capabilities/end.ts'; -import { search } from '../../capabilities/examples.ts'; -import type { CapabilityRecord } from '../../types.ts'; // eslint-disable-next-line @typescript-eslint/explicit-function-return-type const transcribeCapabilities = (capabilities: CapabilityRecord) => [ diff --git a/packages/kernel-agents/src/strategies/repl/messages.test.ts b/packages/kernel-agents-repl/src/strategies/repl/messages.test.ts similarity index 100% rename from packages/kernel-agents/src/strategies/repl/messages.test.ts rename to packages/kernel-agents-repl/src/strategies/repl/messages.test.ts diff --git a/packages/kernel-agents/src/strategies/repl/messages.ts b/packages/kernel-agents-repl/src/strategies/repl/messages.ts similarity index 98% rename from packages/kernel-agents/src/strategies/repl/messages.ts rename to packages/kernel-agents-repl/src/strategies/repl/messages.ts index 5df014be7..4c3311958 100644 --- a/packages/kernel-agents/src/strategies/repl/messages.ts +++ b/packages/kernel-agents-repl/src/strategies/repl/messages.ts @@ -1,11 +1,11 @@ import { stringify } from '@metamask/kernel-utils'; +import { Message } from '@ocap/kernel-agents/types/messages'; +import type { Transcript } from '@ocap/kernel-agents/types/messages'; import type { SyntaxNode } from 'tree-sitter'; import { makeCompartment } from './compartment.ts'; import { parse } from './parse/javascript.ts'; import { ERROR, RETURN } from './symbols.ts'; -import { Message } from '../../types/messages.ts'; -import type { Transcript } from '../../types/messages.ts'; export type StatementType = 'import' | 'evaluation' | 'comment'; diff --git a/packages/kernel-agents/src/strategies/repl/parse/identifiers.test.ts b/packages/kernel-agents-repl/src/strategies/repl/parse/identifiers.test.ts similarity index 100% rename from packages/kernel-agents/src/strategies/repl/parse/identifiers.test.ts rename to packages/kernel-agents-repl/src/strategies/repl/parse/identifiers.test.ts diff --git a/packages/kernel-agents/src/strategies/repl/parse/identifiers.ts b/packages/kernel-agents-repl/src/strategies/repl/parse/identifiers.ts similarity index 100% rename from packages/kernel-agents/src/strategies/repl/parse/identifiers.ts rename to packages/kernel-agents-repl/src/strategies/repl/parse/identifiers.ts diff --git a/packages/kernel-agents/src/strategies/repl/parse/javascript.test.ts b/packages/kernel-agents-repl/src/strategies/repl/parse/javascript.test.ts similarity index 100% rename from packages/kernel-agents/src/strategies/repl/parse/javascript.test.ts rename to packages/kernel-agents-repl/src/strategies/repl/parse/javascript.test.ts diff --git a/packages/kernel-agents/src/strategies/repl/parse/javascript.ts b/packages/kernel-agents-repl/src/strategies/repl/parse/javascript.ts similarity index 100% rename from packages/kernel-agents/src/strategies/repl/parse/javascript.ts rename to packages/kernel-agents-repl/src/strategies/repl/parse/javascript.ts diff --git a/packages/kernel-agents/src/strategies/repl/prepare-attempt.ts b/packages/kernel-agents-repl/src/strategies/repl/prepare-attempt.ts similarity index 90% rename from packages/kernel-agents/src/strategies/repl/prepare-attempt.ts rename to packages/kernel-agents-repl/src/strategies/repl/prepare-attempt.ts index 54e06dfe1..282e09091 100644 --- a/packages/kernel-agents/src/strategies/repl/prepare-attempt.ts +++ b/packages/kernel-agents-repl/src/strategies/repl/prepare-attempt.ts @@ -1,5 +1,16 @@ import { mergeDisjointRecords } from '@metamask/kernel-utils'; import type { Logger } from '@metamask/logger'; +import { extractCapabilitySchemas } from '@ocap/kernel-agents/capabilities/capability'; +import { makeEnd } from '@ocap/kernel-agents/capabilities/end'; +import type { + PREP, + Objective, + Context, + CapabilityRecord, + Progress, + PrepareAttempt, +} from '@ocap/kernel-agents/types'; +import { ifDefined } from '@ocap/kernel-agents/utils'; import { makeEvaluator } from './evaluator.ts'; import type { State, Observation, Action } from './messages.ts'; @@ -11,17 +22,6 @@ import { import { makePrinter } from './printer.ts'; import { makePrompter } from './prompter.ts'; import { makeReader } from './reader.ts'; -import { extractCapabilitySchemas } from '../../capabilities/capability.ts'; -import { makeEnd } from '../../capabilities/end.ts'; -import type { - PREP, - Objective, - Context, - CapabilityRecord, - Progress, - PrepareAttempt, -} from '../../types.ts'; -import { ifDefined } from '../../utils.ts'; export const prepareAttempt: PrepareAttempt = < Result, diff --git a/packages/kernel-agents/src/strategies/repl/prepare-evaluation.test.ts b/packages/kernel-agents-repl/src/strategies/repl/prepare-evaluation.test.ts similarity index 100% rename from packages/kernel-agents/src/strategies/repl/prepare-evaluation.test.ts rename to packages/kernel-agents-repl/src/strategies/repl/prepare-evaluation.test.ts diff --git a/packages/kernel-agents/src/strategies/repl/prepare-evaluation.ts b/packages/kernel-agents-repl/src/strategies/repl/prepare-evaluation.ts similarity index 100% rename from packages/kernel-agents/src/strategies/repl/prepare-evaluation.ts rename to packages/kernel-agents-repl/src/strategies/repl/prepare-evaluation.ts diff --git a/packages/kernel-agents/src/strategies/repl/printer.ts b/packages/kernel-agents-repl/src/strategies/repl/printer.ts similarity index 100% rename from packages/kernel-agents/src/strategies/repl/printer.ts rename to packages/kernel-agents-repl/src/strategies/repl/printer.ts diff --git a/packages/kernel-agents/src/strategies/repl/prompter.test.ts b/packages/kernel-agents-repl/src/strategies/repl/prompter.test.ts similarity index 100% rename from packages/kernel-agents/src/strategies/repl/prompter.test.ts rename to packages/kernel-agents-repl/src/strategies/repl/prompter.test.ts diff --git a/packages/kernel-agents/src/strategies/repl/prompter.ts b/packages/kernel-agents-repl/src/strategies/repl/prompter.ts similarity index 98% rename from packages/kernel-agents/src/strategies/repl/prompter.ts rename to packages/kernel-agents-repl/src/strategies/repl/prompter.ts index df0beb62f..fed8bfb17 100644 --- a/packages/kernel-agents/src/strategies/repl/prompter.ts +++ b/packages/kernel-agents-repl/src/strategies/repl/prompter.ts @@ -1,7 +1,8 @@ +import { ifDefined } from '@ocap/kernel-agents/utils'; + import { exampleTranscripts } from './example-transcripts.ts'; import type { ReplTranscript } from './messages.ts'; import { makeRandom } from './random.ts'; -import { ifDefined } from '../../utils.ts'; const makePreamble = ( nTranscripts: number, diff --git a/packages/kernel-agents/src/strategies/repl/random.ts b/packages/kernel-agents-repl/src/strategies/repl/random.ts similarity index 100% rename from packages/kernel-agents/src/strategies/repl/random.ts rename to packages/kernel-agents-repl/src/strategies/repl/random.ts diff --git a/packages/kernel-agents/src/strategies/repl/reader.test.ts b/packages/kernel-agents-repl/src/strategies/repl/reader.test.ts similarity index 96% rename from packages/kernel-agents/src/strategies/repl/reader.test.ts rename to packages/kernel-agents-repl/src/strategies/repl/reader.test.ts index 9678e5b3b..90f1d8abe 100644 --- a/packages/kernel-agents/src/strategies/repl/reader.test.ts +++ b/packages/kernel-agents-repl/src/strategies/repl/reader.test.ts @@ -1,10 +1,10 @@ import '@ocap/repo-tools/test-utils/mock-endoify'; import type { Logger } from '@metamask/logger'; +import { makeTestStream } from '@ocap/kernel-agents/test-utils'; import { describe, it, expect, vi, beforeEach } from 'vitest'; import { makeReader } from './reader.ts'; -import { makeTestStream } from '../../test-utils.ts'; describe('reader', () => { let logger: Logger; diff --git a/packages/kernel-agents/src/strategies/repl/reader.ts b/packages/kernel-agents-repl/src/strategies/repl/reader.ts similarity index 89% rename from packages/kernel-agents/src/strategies/repl/reader.ts rename to packages/kernel-agents-repl/src/strategies/repl/reader.ts index 3de7af7ab..c5523ab61 100644 --- a/packages/kernel-agents/src/strategies/repl/reader.ts +++ b/packages/kernel-agents-repl/src/strategies/repl/reader.ts @@ -1,8 +1,12 @@ import type { Logger } from '@metamask/logger'; +import { + ifDefined, + withAbort, + gatherStreamingResponse, +} from '@ocap/kernel-agents/utils'; import type { StatementMessage } from './messages.ts'; import { makeSampleCollector } from './sample-collector.ts'; -import { ifDefined, withAbort, gatherStreamingResponse } from '../../utils.ts'; export const makeReader = ({ logger }: { logger?: Logger }) => diff --git a/packages/kernel-agents/src/strategies/repl/sample-collector.ts b/packages/kernel-agents-repl/src/strategies/repl/sample-collector.ts similarity index 96% rename from packages/kernel-agents/src/strategies/repl/sample-collector.ts rename to packages/kernel-agents-repl/src/strategies/repl/sample-collector.ts index 4bc025c22..1cfd84088 100644 --- a/packages/kernel-agents/src/strategies/repl/sample-collector.ts +++ b/packages/kernel-agents-repl/src/strategies/repl/sample-collector.ts @@ -1,8 +1,8 @@ import { SampleGenerationError } from '@metamask/kernel-errors'; import type { Logger } from '@metamask/logger'; +import type { SampleCollector } from '@ocap/kernel-agents/types'; import { StatementMessage } from './messages.ts'; -import type { SampleCollector } from '../../types.ts'; /** * A simple sample collector that collects content from a stream until a stop diff --git a/packages/kernel-agents/src/strategies/repl/symbols.ts b/packages/kernel-agents-repl/src/strategies/repl/symbols.ts similarity index 100% rename from packages/kernel-agents/src/strategies/repl/symbols.ts rename to packages/kernel-agents-repl/src/strategies/repl/symbols.ts diff --git a/packages/kernel-agents/src/strategies/repl/types.ts b/packages/kernel-agents-repl/src/strategies/repl/types.ts similarity index 100% rename from packages/kernel-agents/src/strategies/repl/types.ts rename to packages/kernel-agents-repl/src/strategies/repl/types.ts diff --git a/packages/kernel-agents-repl/tsconfig.build.json b/packages/kernel-agents-repl/tsconfig.build.json new file mode 100644 index 000000000..30d7991d1 --- /dev/null +++ b/packages/kernel-agents-repl/tsconfig.build.json @@ -0,0 +1,13 @@ +{ + "extends": "../../tsconfig.packages.build.json", + "compilerOptions": { + "baseUrl": "./", + "lib": ["ES2022"], + "outDir": "./dist", + "rootDir": "./src", + "types": [] + }, + "references": [], + "files": [], + "include": ["./src"] +} diff --git a/packages/kernel-agents-repl/tsconfig.json b/packages/kernel-agents-repl/tsconfig.json new file mode 100644 index 000000000..6bf57bef4 --- /dev/null +++ b/packages/kernel-agents-repl/tsconfig.json @@ -0,0 +1,15 @@ +{ + "extends": "../../tsconfig.packages.json", + "compilerOptions": { + "baseUrl": "./", + "lib": ["ES2022"], + "types": ["vitest"] + }, + "references": [{ "path": "../repo-tools" }], + "include": [ + "../../vitest.config.ts", + "./src", + "./vite.config.ts", + "./vitest.config.ts" + ] +} diff --git a/packages/kernel-agents-repl/typedoc.json b/packages/kernel-agents-repl/typedoc.json new file mode 100644 index 000000000..f8eb78ae1 --- /dev/null +++ b/packages/kernel-agents-repl/typedoc.json @@ -0,0 +1,8 @@ +{ + "entryPoints": [], + "excludePrivate": true, + "hideGenerator": true, + "out": "docs", + "tsconfig": "./tsconfig.build.json", + "projectDocuments": ["documents/*.md"] +} diff --git a/packages/kernel-agents-repl/vitest.config.ts b/packages/kernel-agents-repl/vitest.config.ts new file mode 100644 index 000000000..afb4fe574 --- /dev/null +++ b/packages/kernel-agents-repl/vitest.config.ts @@ -0,0 +1,16 @@ +import { mergeConfig } from '@ocap/repo-tools/vitest-config'; +import { defineConfig, defineProject } from 'vitest/config'; + +import defaultConfig from '../../vitest.config.ts'; + +export default defineConfig((args) => { + return mergeConfig( + args, + defaultConfig, + defineProject({ + test: { + name: 'kernel-agents-repl', + }, + }), + ); +}); diff --git a/packages/kernel-agents/package.json b/packages/kernel-agents/package.json index 5c42f6c35..a52766927 100644 --- a/packages/kernel-agents/package.json +++ b/packages/kernel-agents/package.json @@ -33,17 +33,66 @@ "default": "./dist/strategies/json-agent.cjs" } }, - "./repl": { + "./agent": { "import": { - "types": "./dist/strategies/repl-agent.d.mts", - "default": "./dist/strategies/repl-agent.mjs" + "types": "./dist/agent.d.mts", + "default": "./dist/agent.mjs" }, "require": { - "types": "./dist/strategies/repl-agent.d.cts", - "default": "./dist/strategies/repl-agent.cjs" + "types": "./dist/agent.d.cts", + "default": "./dist/agent.cjs" + } + }, + "./types": { + "import": { + "types": "./dist/types.d.mts", + "default": "./dist/types.mjs" + }, + "require": { + "types": "./dist/types.d.cts", + "default": "./dist/types.cjs" + } + }, + "./types/messages": { + "import": { + "types": "./dist/types/messages.d.mts", + "default": "./dist/types/messages.mjs" + }, + "require": { + "types": "./dist/types/messages.d.cts", + "default": "./dist/types/messages.cjs" + } + }, + "./utils": { + "import": { + "types": "./dist/utils.d.mts", + "default": "./dist/utils.mjs" + }, + "require": { + "types": "./dist/utils.d.cts", + "default": "./dist/utils.cjs" + } + }, + "./capabilities/capability": { + "import": { + "types": "./dist/capabilities/capability.d.mts", + "default": "./dist/capabilities/capability.mjs" + }, + "require": { + "types": "./dist/capabilities/capability.d.cts", + "default": "./dist/capabilities/capability.cjs" + } + }, + "./capabilities/end": { + "import": { + "types": "./dist/capabilities/end.d.mts", + "default": "./dist/capabilities/end.mjs" + }, + "require": { + "types": "./dist/capabilities/end.d.cts", + "default": "./dist/capabilities/end.cjs" } }, - "./package.json": "./package.json", "./capabilities/examples": { "import": { "types": "./dist/capabilities/examples.d.mts", @@ -54,6 +103,17 @@ "default": "./dist/capabilities/examples.cjs" } }, + "./test-utils": { + "import": { + "types": "./dist/test-utils.d.mts", + "default": "./dist/test-utils.mjs" + }, + "require": { + "types": "./dist/test-utils.d.cts", + "default": "./dist/test-utils.cjs" + } + }, + "./package.json": "./package.json", "./capabilities/math": { "import": { "types": "./dist/capabilities/math.d.mts", @@ -126,8 +186,6 @@ "@metamask/kernel-utils": "workspace:^", "@metamask/logger": "workspace:^", "@ocap/kernel-language-model-service": "workspace:^", - "ses": "^1.14.0", - "tree-sitter": "^0.25.0", - "tree-sitter-javascript": "^0.25.0" + "ses": "^1.14.0" } } diff --git a/packages/kernel-agents/src/agent.test.ts b/packages/kernel-agents/src/agent.test.ts index 8541db208..4c060f98d 100644 --- a/packages/kernel-agents/src/agent.test.ts +++ b/packages/kernel-agents/src/agent.test.ts @@ -4,15 +4,9 @@ import { Logger } from '@metamask/logger'; import { vi, describe, it, expect } from 'vitest'; import { makeJsonAgent } from './strategies/json-agent.ts'; -import { makeReplAgent } from './strategies/repl-agent.ts'; const prompt = 'test prompt'; const prefix = '{"messageType":"assistant","'; -const stop = ''; - -vi.mock('./strategies/repl/prompter.ts', () => ({ - makePrompter: vi.fn(() => () => ({ prompt, readerArgs: { stop } })), -})); vi.mock('./strategies/json/prompter.ts', () => ({ makePrompter: vi.fn(() => () => ({ prompt, readerArgs: { prefix } })), @@ -22,7 +16,6 @@ const logger = new Logger('test'); describe.each([ ['Json', makeJsonAgent, [`invoke":[{"name":"end","args":{"final":"x"}}]}`]], - ['Repl', makeReplAgent, ["await end({ final: 'x' });", stop]], ])('make%sAgent', (strategy, makeAgent, endStatement) => { const mockLlm = (...chunks: string[]) => ({ getInfo: vi.fn(), diff --git a/packages/kernel-test-local/package.json b/packages/kernel-test-local/package.json index 58c12c882..adc5d41f4 100644 --- a/packages/kernel-test-local/package.json +++ b/packages/kernel-test-local/package.json @@ -38,6 +38,7 @@ "@metamask/eslint-config": "^15.0.0", "@metamask/eslint-config-nodejs": "^15.0.0", "@metamask/eslint-config-typescript": "^15.0.0", + "@ocap/kernel-agents-repl": "workspace:^", "@types/node": "^22.13.1", "@typescript-eslint/eslint-plugin": "^8.29.0", "@typescript-eslint/parser": "^8.29.0", diff --git a/packages/kernel-test-local/test/e2e/agents.test.ts b/packages/kernel-test-local/test/e2e/agents.test.ts index baee6096a..7ab684286 100644 --- a/packages/kernel-test-local/test/e2e/agents.test.ts +++ b/packages/kernel-test-local/test/e2e/agents.test.ts @@ -5,7 +5,7 @@ import type { MakeAgentArgs, Agent } from '@ocap/kernel-agents'; import { getMoonPhase } from '@ocap/kernel-agents/capabilities/examples'; import { count, add, multiply } from '@ocap/kernel-agents/capabilities/math'; import { makeJsonAgent } from '@ocap/kernel-agents/json'; -import { makeReplAgent } from '@ocap/kernel-agents/repl'; +import { makeReplAgent } from '@ocap/kernel-agents-repl'; import { OllamaNodejsService } from '@ocap/kernel-language-model-service/ollama/nodejs'; import { fetchMock } from '@ocap/repo-tools/test-utils/fetch-mock'; import { diff --git a/packages/kernel-test-local/tsconfig.json b/packages/kernel-test-local/tsconfig.json index 112c2efd3..8539255af 100644 --- a/packages/kernel-test-local/tsconfig.json +++ b/packages/kernel-test-local/tsconfig.json @@ -8,6 +8,7 @@ }, "references": [ { "path": "../kernel-agents" }, + { "path": "../kernel-agents-repl" }, { "path": "../kernel-language-model-service" }, { "path": "../logger" }, { "path": "../repo-tools" } diff --git a/yarn.lock b/yarn.lock index ca1372055..652cb58e7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3508,6 +3508,50 @@ __metadata: languageName: unknown linkType: soft +"@ocap/kernel-agents-repl@workspace:^, @ocap/kernel-agents-repl@workspace:packages/kernel-agents-repl": + version: 0.0.0-use.local + resolution: "@ocap/kernel-agents-repl@workspace:packages/kernel-agents-repl" + dependencies: + "@arethetypeswrong/cli": "npm:^0.17.4" + "@metamask/auto-changelog": "npm:^5.3.0" + "@metamask/eslint-config": "npm:^15.0.0" + "@metamask/eslint-config-nodejs": "npm:^15.0.0" + "@metamask/eslint-config-typescript": "npm:^15.0.0" + "@metamask/kernel-errors": "workspace:^" + "@metamask/kernel-utils": "workspace:^" + "@metamask/logger": "workspace:^" + "@ocap/kernel-agents": "workspace:^" + "@ocap/repo-tools": "workspace:^" + "@ts-bridge/cli": "npm:^0.6.3" + "@ts-bridge/shims": "npm:^0.1.1" + "@types/node": "npm:^22.13.1" + "@typescript-eslint/eslint-plugin": "npm:^8.29.0" + "@typescript-eslint/parser": "npm:^8.29.0" + "@typescript-eslint/utils": "npm:^8.29.0" + "@vitest/eslint-plugin": "npm:^1.6.5" + depcheck: "npm:^1.4.7" + eslint: "npm:^9.23.0" + eslint-config-prettier: "npm:^10.1.1" + eslint-import-resolver-typescript: "npm:^4.3.1" + eslint-plugin-import-x: "npm:^4.10.0" + eslint-plugin-jsdoc: "npm:^50.6.9" + eslint-plugin-n: "npm:^17.17.0" + eslint-plugin-prettier: "npm:^5.2.6" + eslint-plugin-promise: "npm:^7.2.1" + prettier: "npm:^3.5.3" + rimraf: "npm:^6.0.1" + ses: "npm:^1.14.0" + tree-sitter: "npm:^0.25.0" + tree-sitter-javascript: "npm:^0.25.0" + turbo: "npm:^2.5.6" + typedoc: "npm:^0.28.1" + typescript: "npm:~5.8.2" + typescript-eslint: "npm:^8.29.0" + vite: "npm:^7.3.0" + vitest: "npm:^4.0.16" + languageName: unknown + linkType: soft + "@ocap/kernel-agents@workspace:^, @ocap/kernel-agents@workspace:packages/kernel-agents": version: 0.0.0-use.local resolution: "@ocap/kernel-agents@workspace:packages/kernel-agents" @@ -3542,8 +3586,6 @@ __metadata: prettier: "npm:^3.5.3" rimraf: "npm:^6.0.1" ses: "npm:^1.14.0" - tree-sitter: "npm:^0.25.0" - tree-sitter-javascript: "npm:^0.25.0" turbo: "npm:^2.5.6" typedoc: "npm:^0.28.1" typescript: "npm:~5.8.2" @@ -3644,6 +3686,7 @@ __metadata: "@metamask/eslint-config-typescript": "npm:^15.0.0" "@metamask/logger": "workspace:^" "@ocap/kernel-agents": "workspace:^" + "@ocap/kernel-agents-repl": "workspace:^" "@ocap/kernel-language-model-service": "workspace:^" "@ocap/repo-tools": "workspace:^" "@types/node": "npm:^22.13.1"