Adds .pi/extensions/slack/ with Socket Mode bridge, allowlist gating, and 4 LLM-callable tools (slack_post/reply/react/upload). Inbound messages bridge into pi.sendUserMessage() with ctx.isIdle() guard; turn_end posts the assistant's reply back to Slack via SlackContext. session_shutdown tears down the Socket Mode connection. Customizations preserved from portfolio-advisor reference: - threadTs field on event types (7 sites in events.ts) - threadParent routing in createSlackContext (context.ts:45) - exported parseEventContent + buildSyntheticEvent Tests: 27 new (3 files); 78 pre-existing tests still green; 114 total. Plan: .claude/plans/context-study-https-github-com-ryaneggz-binary-hartmanis.md Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
43 lines
1.1 KiB
JSON
43 lines
1.1 KiB
JSON
{
|
|
"name": "open-harness",
|
|
"version": "0.1.0",
|
|
"private": true,
|
|
"description": "Open Harness — AI Agent Sandbox Orchestrator",
|
|
"type": "module",
|
|
"packageManager": "pnpm@10.33.0",
|
|
"scripts": {
|
|
"setup": "pnpm install && pnpm -r --if-present run build",
|
|
"build": "pnpm -r --if-present run build",
|
|
"test": "pnpm -r --if-present run test && vitest run",
|
|
"test:scripts": "vitest run",
|
|
"lint": "pnpm -r --if-present run lint",
|
|
"format:check": "pnpm -r --if-present run format:check",
|
|
"format": "pnpm -r --if-present run format",
|
|
"docs:build": "pnpm --dir apps/docs build",
|
|
"docs:dev": "pnpm --dir apps/docs start",
|
|
"docs:serve": "pnpm --dir apps/docs serve"
|
|
},
|
|
"dependencies": {
|
|
"croner": "^9.1.0"
|
|
},
|
|
"devDependencies": {
|
|
"vitest": "^3.0.0",
|
|
"@slack/socket-mode": "^2.0.0",
|
|
"@slack/web-api": "^7.0.0",
|
|
"@sinclair/typebox": "^0.34.0",
|
|
"chalk": "^5.6.2",
|
|
"diff": "^8.0.2"
|
|
},
|
|
"engines": {
|
|
"node": ">=20.0.0"
|
|
},
|
|
"pnpm": {
|
|
"overrides": {
|
|
"d3-array": "^3.2.0",
|
|
"d3-shape": "^3.2.0",
|
|
"d3-path": "^3.1.0",
|
|
"webpack": "5.98.0"
|
|
}
|
|
}
|
|
}
|