Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions company_rules/permissions.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
default: allow
rules:
- match: {tool: "write", target_exists: true, owner_is_self: false}
action: reject
reason: "Cannot overwrite files owned by other employees"
- match: {tool: "external_api"}
action: reject
reason: "External API calls require explicit policy allowance"
- match: {cost_usd_gt: 10.0}
action: reject
reason: "Single operation exceeds budget threshold"
32 changes: 32 additions & 0 deletions frontend/app.js
Original file line number Diff line number Diff line change
Expand Up @@ -569,6 +569,38 @@ class AppController {
return null; // don't spam the activity log
},
'activity': (p) => ({ text: p.message || '', cls: 'system', agent: 'SYSTEM' }),
'acp_update': (p) => {
const { kind, employee_id, data } = p;
switch (kind) {
case 'message':
console.debug('[ACP] message from', employee_id, data?.content?.substring?.(0, 100));
break;
case 'thought':
console.debug('[ACP] thought from', employee_id);
break;
case 'tool_call_start':
console.debug('[ACP] tool call:', data?.name, 'from', employee_id);
break;
case 'tool_call_progress':
console.debug('[ACP] tool progress from', employee_id);
break;
case 'plan':
console.debug('[ACP] plan update from', employee_id, data?.entries?.length, 'steps');
break;
case 'usage':
console.debug('[ACP] usage from', employee_id, data);
break;
case 'commands':
console.debug('[ACP] commands from', employee_id);
break;
case 'mode':
console.debug('[ACP] mode change:', data?.mode_id, 'for', employee_id);
break;
default:
console.debug('[ACP] unknown kind:', kind, 'from', employee_id);
}
return null; // no activity log entry
},
};

const formatter = formatters[msg.type];
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@1mancompany/onemancompany",
"version": "0.7.77",
"version": "0.7.78",
"description": "The AI Operating System for One-Person Companies",
"bin": {
"onemancompany": "bin/cli.js"
Expand Down
3 changes: 2 additions & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[project]
name = "onemancompany"
version = "0.7.77"
version = "0.7.78"
description = "A one-man company simulation with pixel art visualization and LangChain AI agents"
requires-python = ">=3.12"
dependencies = [
Expand All @@ -25,6 +25,7 @@ dependencies = [
"InquirerPy>=0.3",
"datasets>=4.8.3",
"ddgs>=8.0",
"agent-client-protocol>=0.9.0",
]

[project.optional-dependencies]
Expand Down
Empty file.
317 changes: 317 additions & 0 deletions src/onemancompany/acp/adapter.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,317 @@
"""ACP SDK adapter — single import point for all Agent Client Protocol types.

Every OMC module that needs ACP types MUST import from here, never from ``acp.*``
directly. If the ACP SDK has a breaking change, only this file needs updating.

SDK version: agent-client-protocol==0.9.0 (schema ref: v0.11.2)
"""

from __future__ import annotations

# ---------------------------------------------------------------------------
# Core protocols
# ---------------------------------------------------------------------------
from acp.interfaces import Agent, Client

# ---------------------------------------------------------------------------
# Connection / runner helpers
# ---------------------------------------------------------------------------
from acp.core import connect_to_agent, run_agent
from acp.client.connection import ClientSideConnection
from acp.agent.connection import AgentSideConnection

# ---------------------------------------------------------------------------
# Transport
# ---------------------------------------------------------------------------
from acp.transports import spawn_stdio_transport
from acp.stdio import stdio_streams, spawn_stdio_connection, spawn_agent_process, spawn_client_process

# ---------------------------------------------------------------------------
# Protocol version & method tables
# ---------------------------------------------------------------------------
from acp.meta import PROTOCOL_VERSION, AGENT_METHODS, CLIENT_METHODS

# ---------------------------------------------------------------------------
# Request / Response types
# ---------------------------------------------------------------------------
from acp.schema import (
# Lifecycle
InitializeRequest,
InitializeResponse,
NewSessionRequest,
NewSessionResponse,
LoadSessionRequest,
LoadSessionResponse,
ResumeSessionRequest,
ResumeSessionResponse,
ForkSessionRequest,
ForkSessionResponse,
CloseSessionRequest,
CloseSessionResponse,
# Prompt
PromptRequest,
PromptResponse,
# Permissions
RequestPermissionRequest,
RequestPermissionResponse,
# Session metadata
AgentCapabilities,
ClientCapabilities,
Implementation,
# Session management
ListSessionsRequest,
ListSessionsResponse,
SetSessionModeRequest,
SetSessionModeResponse,
SetSessionModelRequest,
SetSessionModelResponse,
SetSessionConfigOptionSelectRequest,
SetSessionConfigOptionBooleanRequest,
SetSessionConfigOptionResponse,
# Auth
AuthenticateRequest,
AuthenticateResponse,
# Notifications
CancelNotification,
SessionNotification,
# File I/O
ReadTextFileRequest,
ReadTextFileResponse,
WriteTextFileRequest,
WriteTextFileResponse,
# Terminal
CreateTerminalRequest,
CreateTerminalResponse,
TerminalOutputRequest,
TerminalOutputResponse,
WaitForTerminalExitRequest,
WaitForTerminalExitResponse,
KillTerminalRequest,
KillTerminalResponse,
ReleaseTerminalRequest,
ReleaseTerminalResponse,
# Session update types (streamed from agent → client)
AgentMessageChunk,
AgentThoughtChunk,
ToolCallStart,
ToolCallProgress,
AgentPlanUpdate,
UsageUpdate,
AvailableCommandsUpdate,
CurrentModeUpdate,
ConfigOptionUpdate,
SessionInfoUpdate,
UserMessageChunk,
# Plan
PlanEntry,
# Content blocks
TextContentBlock,
ImageContentBlock,
AudioContentBlock,
ResourceContentBlock,
EmbeddedResourceContentBlock,
# Tool call content
ContentToolCallContent,
FileEditToolCallContent,
TerminalToolCallContent,
ToolCallLocation,
# Misc
EnvVariable,
HttpMcpServer,
SseMcpServer,
McpServerStdio,
PermissionOption,
Usage,
Cost,
ToolCallStatus,
ToolKind,
PlanEntryPriority,
PlanEntryStatus,
StopReason,
# Session capabilities
SessionCapabilities,
SessionCloseCapabilities,
SessionForkCapabilities,
SessionListCapabilities,
SessionResumeCapabilities,
# Session mode/model state
SessionMode,
SessionModeState,
SessionModelState,
)

# ---------------------------------------------------------------------------
# Content / update builder helpers
# ---------------------------------------------------------------------------
from acp.helpers import (
text_block,
image_block,
audio_block,
resource_link_block,
embedded_text_resource,
embedded_blob_resource,
resource_block,
tool_content,
tool_diff_content,
tool_terminal_ref,
plan_entry,
update_plan,
update_user_message,
update_user_message_text,
update_agent_message,
update_agent_message_text,
update_agent_thought,
update_agent_thought_text,
session_notification,
start_tool_call,
start_read_tool_call,
start_edit_tool_call,
update_tool_call,
)

# ---------------------------------------------------------------------------
# Exceptions
# ---------------------------------------------------------------------------
from acp.exceptions import RequestError

__all__ = [
# Protocols
"Agent",
"Client",
# Connection
"connect_to_agent",
"run_agent",
"ClientSideConnection",
"AgentSideConnection",
# Transport
"spawn_stdio_transport",
"stdio_streams",
"spawn_stdio_connection",
"spawn_agent_process",
"spawn_client_process",
# Protocol metadata
"PROTOCOL_VERSION",
"AGENT_METHODS",
"CLIENT_METHODS",
# Request/Response
"InitializeRequest",
"InitializeResponse",
"NewSessionRequest",
"NewSessionResponse",
"LoadSessionRequest",
"LoadSessionResponse",
"ResumeSessionRequest",
"ResumeSessionResponse",
"ForkSessionRequest",
"ForkSessionResponse",
"CloseSessionRequest",
"CloseSessionResponse",
"PromptRequest",
"PromptResponse",
"RequestPermissionRequest",
"RequestPermissionResponse",
"AgentCapabilities",
"ClientCapabilities",
"Implementation",
"ListSessionsRequest",
"ListSessionsResponse",
"SetSessionModeRequest",
"SetSessionModeResponse",
"SetSessionModelRequest",
"SetSessionModelResponse",
"SetSessionConfigOptionSelectRequest",
"SetSessionConfigOptionBooleanRequest",
"SetSessionConfigOptionResponse",
"AuthenticateRequest",
"AuthenticateResponse",
"CancelNotification",
"SessionNotification",
"ReadTextFileRequest",
"ReadTextFileResponse",
"WriteTextFileRequest",
"WriteTextFileResponse",
"CreateTerminalRequest",
"CreateTerminalResponse",
"TerminalOutputRequest",
"TerminalOutputResponse",
"WaitForTerminalExitRequest",
"WaitForTerminalExitResponse",
"KillTerminalRequest",
"KillTerminalResponse",
"ReleaseTerminalRequest",
"ReleaseTerminalResponse",
# Session updates
"AgentMessageChunk",
"AgentThoughtChunk",
"ToolCallStart",
"ToolCallProgress",
"AgentPlanUpdate",
"UsageUpdate",
"AvailableCommandsUpdate",
"CurrentModeUpdate",
"ConfigOptionUpdate",
"SessionInfoUpdate",
"UserMessageChunk",
# Plan
"PlanEntry",
# Content blocks
"TextContentBlock",
"ImageContentBlock",
"AudioContentBlock",
"ResourceContentBlock",
"EmbeddedResourceContentBlock",
# Tool call content
"ContentToolCallContent",
"FileEditToolCallContent",
"TerminalToolCallContent",
"ToolCallLocation",
# Misc schema types
"EnvVariable",
"HttpMcpServer",
"SseMcpServer",
"McpServerStdio",
"PermissionOption",
"Usage",
"Cost",
"ToolCallStatus",
"ToolKind",
"PlanEntryPriority",
"PlanEntryStatus",
"StopReason",
# Builder helpers
"text_block",
"image_block",
"audio_block",
"resource_link_block",
"embedded_text_resource",
"embedded_blob_resource",
"resource_block",
"tool_content",
"tool_diff_content",
"tool_terminal_ref",
"plan_entry",
"update_plan",
"update_user_message",
"update_user_message_text",
"update_agent_message",
"update_agent_message_text",
"update_agent_thought",
"update_agent_thought_text",
"session_notification",
"start_tool_call",
"start_read_tool_call",
"start_edit_tool_call",
"update_tool_call",
# Session capabilities
"SessionCapabilities",
"SessionCloseCapabilities",
"SessionForkCapabilities",
"SessionListCapabilities",
"SessionResumeCapabilities",
# Session mode/model state
"SessionMode",
"SessionModeState",
"SessionModelState",
# Exceptions
"RequestError",
]
Loading
Loading