motebit 0.8.0 → 1.0.0

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/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "motebit",
3
- "version": "0.8.0",
3
+ "version": "1.0.0",
4
4
  "type": "module",
5
- "description": "Sovereign AI agentpersistent identity, accumulated trust, governance at the boundary",
5
+ "description": "Reference runtime and operator console for sovereign AI agentsREPL, daemon, delegation, MCP server. Persistent Ed25519 identity, signed execution receipts, governance at the boundary.",
6
6
  "main": "./dist/index.js",
7
7
  "bin": {
8
8
  "motebit": "./dist/index.js"
@@ -10,7 +10,9 @@
10
10
  "files": [
11
11
  "dist/index.js",
12
12
  "dist/index.js.map",
13
+ "schema/motebit-yaml-v1.json",
13
14
  "LICENSE",
15
+ "NOTICE",
14
16
  "README.md"
15
17
  ],
16
18
  "license": "BSL-1.1",
@@ -43,10 +45,19 @@
43
45
  },
44
46
  "dependencies": {
45
47
  "@modelcontextprotocol/sdk": "^1.29.0",
48
+ "@noble/curves": "^1.9.0",
46
49
  "@noble/ed25519": "~3.0.1",
47
- "@noble/hashes": "~1.6.0",
50
+ "@noble/hashes": "~1.8.0",
51
+ "@solana/spl-token": "^0.4.9",
52
+ "@solana/web3.js": "^1.95.0",
48
53
  "sql.js": "^1.14.1",
49
- "ws": "^8.20.0"
54
+ "vscode-jsonrpc": "^8.2.1",
55
+ "vscode-languageserver": "^9.0.1",
56
+ "vscode-languageserver-textdocument": "^1.0.12",
57
+ "ws": "^8.20.0",
58
+ "yaml": "^2.6.0",
59
+ "zod": "^3.25.0",
60
+ "zod-to-json-schema": "^3.25.2"
50
61
  },
51
62
  "devDependencies": {
52
63
  "@types/node": "^22.0.0",
@@ -54,33 +65,40 @@
54
65
  "tsx": "^4.19.0",
55
66
  "typescript": "^5.6.0",
56
67
  "vitest": "^2.1.0",
57
- "@motebit/ai-core": "0.1.17",
58
- "@motebit/behavior-engine": "0.1.17",
59
- "@motebit/core-identity": "0.1.17",
60
- "@motebit/encryption": "0.1.17",
61
- "@motebit/event-log": "0.1.17",
62
- "@motebit/gradient": "0.1.17",
63
- "@motebit/identity-file": "0.1.17",
64
- "@motebit/mcp-client": "0.1.17",
65
- "@motebit/mcp-server": "0.1.17",
66
- "@motebit/memory-graph": "0.1.17",
67
- "@motebit/persistence": "0.1.17",
68
- "@motebit/planner": "0.1.17",
69
- "@motebit/policy": "0.1.17",
70
- "@motebit/runtime": "0.1.17",
71
- "@motebit/sdk": "0.8.0",
72
- "@motebit/state-vector": "0.1.17",
73
- "@motebit/sync-engine": "0.1.17",
74
- "@motebit/tools": "0.1.17",
75
- "@motebit/wallet-solana": "0.1.17"
68
+ "@motebit/ai-core": "0.2.0",
69
+ "@motebit/behavior-engine": "0.1.18",
70
+ "@motebit/core-identity": "0.1.18",
71
+ "@motebit/crypto": "1.0.0",
72
+ "@motebit/encryption": "0.2.0",
73
+ "@motebit/event-log": "0.1.18",
74
+ "@motebit/gradient": "0.1.18",
75
+ "@motebit/identity-file": "0.1.18",
76
+ "@motebit/mcp-client": "0.1.18",
77
+ "@motebit/mcp-server": "0.1.18",
78
+ "@motebit/memory-graph": "0.2.0",
79
+ "@motebit/persistence": "0.1.18",
80
+ "@motebit/planner": "0.1.18",
81
+ "@motebit/policy": "0.1.18",
82
+ "@motebit/privacy-layer": "0.1.18",
83
+ "@motebit/runtime": "0.2.0",
84
+ "@motebit/sdk": "1.0.0",
85
+ "@motebit/self-knowledge": "0.1.17",
86
+ "@motebit/state-vector": "0.1.18",
87
+ "@motebit/sync-engine": "0.1.18",
88
+ "@motebit/tools": "0.2.0",
89
+ "@motebit/voice": "0.1.15",
90
+ "@motebit/wallet-solana": "0.2.0",
91
+ "@motebit/wire-schemas": "0.2.0"
76
92
  },
77
93
  "scripts": {
78
94
  "start": "tsx src/index.ts",
79
95
  "build": "tsup",
96
+ "build-schema": "tsx scripts/build-schema.ts",
80
97
  "test": "vitest run --passWithNoTests",
81
98
  "test:coverage": "vitest run --coverage",
82
99
  "typecheck": "tsc --noEmit",
83
100
  "lint": "eslint src/",
101
+ "lint:pack": "publint --strict",
84
102
  "clean": "rm -rf dist .turbo *.tsbuildinfo"
85
103
  }
86
104
  }
@@ -0,0 +1,213 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://raw.githubusercontent.com/motebit/motebit/main/apps/cli/schema/motebit-yaml-v1.json",
4
+ "title": "motebit.yaml (v1)",
5
+ "description": "Declarative surface for a motebit: personality, provider, governance, MCP servers, and scheduled routines. Applied by `motebit up`.",
6
+ "type": "object",
7
+ "properties": {
8
+ "version": {
9
+ "type": "number",
10
+ "const": 1,
11
+ "description": "Schema version. Currently `1`. Pinning lets future CLI versions print a targeted error on mismatch instead of silently misinterpreting the document."
12
+ },
13
+ "name": {
14
+ "type": "string",
15
+ "description": "Display name for this motebit. Surfaces in the REPL banner and delegation listings."
16
+ },
17
+ "personality_notes": {
18
+ "type": "string",
19
+ "description": "Free-form personality guidance. Appended to the system prompt on every turn. Keep short — every token here costs on every call."
20
+ },
21
+ "temperature": {
22
+ "type": "number",
23
+ "minimum": 0,
24
+ "maximum": 2,
25
+ "description": "Sampling temperature for the default provider [0, 2]. Unset = model default. Only applied when explicitly set."
26
+ },
27
+ "max_tokens": {
28
+ "type": "integer",
29
+ "exclusiveMinimum": 0,
30
+ "description": "Default max output tokens per response. Overridden by `--max-tokens` at the CLI."
31
+ },
32
+ "provider": {
33
+ "type": "object",
34
+ "properties": {
35
+ "mode": {
36
+ "type": "string",
37
+ "enum": ["byok", "paid", "sovereign"],
38
+ "description": "Provider mode. `byok` = bring-your-own API key (env var). `paid` = motebit cloud. `sovereign` = local on-device model (no external calls)."
39
+ },
40
+ "wireProtocol": {
41
+ "type": "string",
42
+ "enum": ["anthropic", "openai"],
43
+ "description": "Wire protocol the endpoint speaks. `anthropic` for Claude, `openai` for OpenAI-compatible endpoints (OpenAI, Ollama, LM Studio, vLLM)."
44
+ },
45
+ "model": {
46
+ "type": "string",
47
+ "description": "Model identifier, e.g. `claude-sonnet-4-6`, `gpt-5.4-mini`, `llama3.2`."
48
+ },
49
+ "baseUrl": {
50
+ "type": "string",
51
+ "format": "uri",
52
+ "description": "Override the API base URL. Used for local inference servers (`http://localhost:11434/v1` for Ollama) or routing through a proxy."
53
+ },
54
+ "maxTokens": {
55
+ "type": "integer",
56
+ "exclusiveMinimum": 0,
57
+ "description": "Upper bound on response length (model output tokens)."
58
+ }
59
+ },
60
+ "additionalProperties": false,
61
+ "description": "AI provider configuration. API keys are NEVER declared here — they're read from environment variables or the OS keyring."
62
+ },
63
+ "governance": {
64
+ "type": "object",
65
+ "properties": {
66
+ "approvalPreset": {
67
+ "type": "string",
68
+ "enum": ["cautious", "balanced", "autonomous"],
69
+ "description": "Default gate for tool calls. `cautious` = approve every sensitive call. `balanced` = approve writes, auto-approve reads. `autonomous` = auto-approve most calls."
70
+ },
71
+ "persistenceThreshold": {
72
+ "type": "number",
73
+ "minimum": 0,
74
+ "maximum": 1,
75
+ "description": "Memory-formation threshold [0, 1]. Higher = fewer memories formed; only strong signals persist. Typical: 0.6."
76
+ },
77
+ "rejectSecrets": {
78
+ "type": "boolean",
79
+ "description": "When true, the privacy layer blocks any tool call or outbound message whose content is classified as `secret`. Fail-closed: error on classifier failure."
80
+ },
81
+ "maxCallsPerTurn": {
82
+ "type": "integer",
83
+ "exclusiveMinimum": 0,
84
+ "description": "Per-turn tool-call ceiling. Bounds runaway loops and protects the policy gate from exhaustion attacks."
85
+ },
86
+ "maxMemoriesPerTurn": {
87
+ "type": "integer",
88
+ "exclusiveMinimum": 0,
89
+ "description": "Per-turn memory-formation ceiling. Prevents a single turn from flooding the memory graph."
90
+ }
91
+ },
92
+ "required": [
93
+ "approvalPreset",
94
+ "persistenceThreshold",
95
+ "rejectSecrets",
96
+ "maxCallsPerTurn",
97
+ "maxMemoriesPerTurn"
98
+ ],
99
+ "additionalProperties": false,
100
+ "description": "Governance at the boundary — surface-tension constraints that apply to every turn."
101
+ },
102
+ "mcp_servers": {
103
+ "type": "array",
104
+ "items": {
105
+ "type": "object",
106
+ "properties": {
107
+ "name": {
108
+ "type": "string",
109
+ "minLength": 1,
110
+ "description": "Local name for the MCP server. Must be unique."
111
+ },
112
+ "transport": {
113
+ "type": "string",
114
+ "enum": ["stdio", "http"],
115
+ "description": "Transport. `stdio` spawns a child process; `http` connects to a URL."
116
+ },
117
+ "command": {
118
+ "type": "string",
119
+ "description": "Executable to spawn when `transport: stdio`. E.g. `npx`, `node`, `python`."
120
+ },
121
+ "args": {
122
+ "type": "array",
123
+ "items": {
124
+ "type": "string"
125
+ },
126
+ "description": "Argument vector passed to `command` when `transport: stdio`."
127
+ },
128
+ "url": {
129
+ "type": "string",
130
+ "format": "uri",
131
+ "description": "Endpoint URL when `transport: http`. Must be a full URL including scheme."
132
+ },
133
+ "env": {
134
+ "type": "object",
135
+ "additionalProperties": {
136
+ "type": "string"
137
+ },
138
+ "description": "Environment variables set for the child process (stdio transport)."
139
+ },
140
+ "trusted": {
141
+ "type": "boolean",
142
+ "description": "Auto-approve tool calls from this server. Equivalent to promoting the server into `mcp_trusted_servers`. Off by default."
143
+ },
144
+ "motebit": {
145
+ "type": "boolean",
146
+ "description": "This server is another motebit instance — enables motebit-to-motebit transport with caller identity injected into every call."
147
+ },
148
+ "motebitType": {
149
+ "type": "string",
150
+ "enum": ["personal", "service", "collaborative"],
151
+ "description": "Semantic role of the peer motebit. `personal` = another device of yours. `service` = paid worker. `collaborative` = peer agent."
152
+ }
153
+ },
154
+ "required": ["name", "transport"],
155
+ "additionalProperties": false,
156
+ "description": "MCP server — a tool source. stdio transports spawn a subprocess; http transports dial a remote endpoint."
157
+ },
158
+ "description": "MCP tool servers to connect on start. Each entry declares transport, endpoint, and (optionally) trust status."
159
+ },
160
+ "routines": {
161
+ "type": "array",
162
+ "items": {
163
+ "type": "object",
164
+ "properties": {
165
+ "id": {
166
+ "type": "string",
167
+ "minLength": 1,
168
+ "maxLength": 64,
169
+ "pattern": "^[a-z0-9][a-z0-9_-]*$",
170
+ "description": "Stable identifier for the routine. Used as the upsert key — changing the id renames the routine (old one is pruned, new one added). Lowercase alphanumeric with `-` or `_`."
171
+ },
172
+ "prompt": {
173
+ "type": "string",
174
+ "minLength": 1,
175
+ "description": "Natural-language prompt the agent runs on each tick. Content changes update the same goal row (preserving `created_at`)."
176
+ },
177
+ "every": {
178
+ "type": "string",
179
+ "minLength": 1,
180
+ "description": "Run cadence. Interval string (`<n>m`, `<n>h`, `<n>d`). E.g. `1h` = hourly."
181
+ },
182
+ "mode": {
183
+ "type": "string",
184
+ "enum": ["recurring", "once"],
185
+ "default": "recurring",
186
+ "description": "`recurring` runs every `every` tick forever. `once` runs a single time then marks the goal completed."
187
+ },
188
+ "wall_clock": {
189
+ "type": "string",
190
+ "minLength": 1,
191
+ "description": "Hard wall-clock timeout per run. Kills the turn if it exceeds this. Default: 10m."
192
+ },
193
+ "project": {
194
+ "type": "string",
195
+ "minLength": 1,
196
+ "description": "Project identifier — groups goals that share context (shared memory scope)."
197
+ },
198
+ "enabled": {
199
+ "type": "boolean",
200
+ "default": true,
201
+ "description": "Set false to pause the routine without deleting it. Preserves state and history; resumable with no data loss."
202
+ }
203
+ },
204
+ "required": ["id", "prompt", "every"],
205
+ "additionalProperties": false,
206
+ "description": "A scheduled routine — compiles to exactly one Goal row. Changing fields other than `id` updates the same row in place."
207
+ },
208
+ "description": "Scheduled routines. Each compiles to exactly one Goal row; `id` is the upsert key. Re-running `motebit up` on unchanged yaml is a true no-op."
209
+ }
210
+ },
211
+ "required": ["version"],
212
+ "additionalProperties": false
213
+ }