aki-pro-max 2.3.3 → 2.3.4
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/README.md +1 -1
- package/bin/aki-pro-max.js +1 -1
- package/package.json +1 -1
- package/src/admin.mjs +1 -1
- package/version.json +2 -2
- package/.env.example +0 -34
- package/AICOWORKER-NATIVE-TOOLS.md +0 -60
- package/CLAUDE-LIVE-TOOLS-EVIDENCE.json +0 -94
- package/FULL-TRACE-EVIDENCE.json +0 -109
- package/ISSUE-1-REMOTE.json +0 -1
- package/ISSUE-2-POSTREVIEW.json +0 -1
- package/ISSUE-2-REMOTE.json +0 -1
- package/KEY-ROTATION-EVIDENCE.json +0 -9
- package/PMN-9ROUTER-FINAL.md +0 -13
- package/RAPID-BASIL-RECONCILIATION.json +0 -10
- package/RELEASE-ARCHIVE.json +0 -15
- package/SECURITY-RECONCILIATION.json +0 -30
- package/TEST-ISSUES12-FINAL.txt +0 -0
- package/TEST-ISSUES12-HARNESS.txt +0 -0
- package/VERIFIER-ISSUES12-FINAL.txt +0 -0
- package/VERIFY-RELEASE-ISSUES12-FINAL.txt +0 -0
- package/VERIFY-RELEASE-ISSUES12-HARNESS.txt +0 -0
- package/docs/ADMIN-GUI-CONTRACT.md +0 -29
- package/docs/CAPABILITY-MATRIX.md +0 -44
- package/docs/CORRELATION-DESIGN.md +0 -226
- package/docs/FAIL-CLOSED-ISSUE-HARNESS.md +0 -21
- package/docs/WEB-SESSION-TRANSPORT-DESIGN.md +0 -423
- package/docs/assets/control-plane.jpg +0 -0
- package/gitleaks-report-all.json +0 -1
- package/gitleaks-report-latest.json +0 -1
- package/gitleaks-report.json +0 -1
- package/scripts/eventual-tool-loop.mjs +0 -55
- package/scripts/live-eventual-multitool.mjs +0 -18
- package/scripts/upgrade-admin-v232.mjs +0 -33
- package/scripts/verify-issue-closure.mjs +0 -81
- package/scripts/verify-release.mjs +0 -31
- package/test/9router-executor.integration.test.mjs +0 -207
- package/test/admin-auth.test.mjs +0 -47
- package/test/admin.test.mjs +0 -68
- package/test/config.test.mjs +0 -14
- package/test/contract.test.mjs +0 -14
- package/test/correlation-store.test.mjs +0 -19
- package/test/correlation.integration.test.mjs +0 -48
- package/test/eventual-tool-loop.test.mjs +0 -42
- package/test/fixtures/text.json +0 -8
- package/test/fixtures/tool.json +0 -7
- package/test/fixtures/web-session-observed-done.json +0 -12
- package/test/fixtures/web-session-tool-fragments.json +0 -14
- package/test/full-ingress/alias-loader.mjs +0 -22
- package/test/full-ingress/run-full-ingress.mjs +0 -207
- package/test/full-ingress/seed-9router.mjs +0 -36
- package/test/helpers.mjs +0 -9
- package/test/issue-closure-harness.test.mjs +0 -49
- package/test/model-thinking.test.mjs +0 -20
- package/test/protocol.test.mjs +0 -16
- package/test/request.test.mjs +0 -10
- package/test/session-store.test.mjs +0 -20
- package/test/web-session-builder.test.mjs +0 -124
- package/test/web-session-events.test.mjs +0 -241
- package/test/web-session-integration.test.mjs +0 -103
- package/test/web-session-tools.test.mjs +0 -52
package/README.md
CHANGED
|
@@ -85,7 +85,7 @@ npx aki-pro-max start
|
|
|
85
85
|
npm install -g aki-pro-max
|
|
86
86
|
# Start the proxy (server + local Control Plane):
|
|
87
87
|
aki-pro-max start
|
|
88
|
-
#
|
|
88
|
+
# The `akimcp` executable is a compatibility alias installed by the aki-pro-max package:
|
|
89
89
|
akimcp start --port 8788
|
|
90
90
|
```
|
|
91
91
|
|
package/bin/aki-pro-max.js
CHANGED
package/package.json
CHANGED
package/src/admin.mjs
CHANGED
|
@@ -52,7 +52,7 @@ async function loadAuth(){const s=await fetch('/admin/auth/status',{cache:'no-st
|
|
|
52
52
|
$('discoverAuth').addEventListener('click',async()=>{const d=await fetch('/admin/auth/discover',{method:'POST',headers:{'content-type':'application/json'},body:'{}'}).then(r=>r.json());$('authMessage').textContent=d.installed?(d.reason+' Manual cookie entry remains required.'):'Postman Desktop was not detected.'});
|
|
53
53
|
$('validateAuth').addEventListener('click',async()=>{const r=await fetch('/admin/auth/validate',{method:'POST',headers:{'content-type':'application/json'},body:JSON.stringify(authPayload())});const d=await r.json();$('authMessage').textContent=r.ok?'Valid fields · cookie '+d.cookie.masked:d.error.message});
|
|
54
54
|
$('applyAuth').addEventListener('click',async()=>{const r=await fetch('/admin/auth/apply',{method:'POST',headers:{'content-type':'application/json'},body:JSON.stringify(authPayload())});const d=await r.json();$('authMessage').textContent=r.ok?'Saved safely. Restart provider to activate. Backup: '+d.backupFile:d.error.message;if(r.ok){$('sessionCookie').value='';await loadAuth()}});
|
|
55
|
-
async function checkUpdates(config){const url=config.updateManifestUrl;if(!url)return;try{const c=new AbortController();const t=setTimeout(()=>c.abort(),3000);const m=await fetch(url,{cache:'no-store',signal:c.signal}).then(r=>r.ok?r.json():null);clearTimeout(t);if(!m||!newer(m.latest,config.currentVersion)||localStorage.getItem('aki-update-dismissed')===m.latest)return;$('updateBanner').classList.remove('hidden');$('updateTitle').textContent='Aki Pro Max '+m.latest+' is available';$('updateCopy').textContent='Current version: '+config.currentVersion+'. Update manually to avoid interrupting an active request.';$('updateCommand').textContent=m.updateCommand||'npm
|
|
55
|
+
async function checkUpdates(config){const url=config.updateManifestUrl;if(!url)return;try{const c=new AbortController();const t=setTimeout(()=>c.abort(),3000);const m=await fetch(url,{cache:'no-store',signal:c.signal}).then(r=>r.ok?r.json():null);clearTimeout(t);if(!m||!newer(m.latest,config.currentVersion)||localStorage.getItem('aki-update-dismissed')===m.latest)return;$('updateBanner').classList.remove('hidden');$('updateTitle').textContent='Aki Pro Max '+m.latest+' is available';$('updateCopy').textContent='Current version: '+config.currentVersion+'. Update manually to avoid interrupting an active request.';$('updateCommand').textContent=m.updateCommand||'npm install -g '+(m.installPackage||'aki-pro-max')+'@latest';$('copyUpdate').onclick=()=>copy($('updateCommand').textContent);$('dismissUpdate').onclick=()=>{localStorage.setItem('aki-update-dismissed',m.latest);$('updateBanner').classList.add('hidden')};$('reloadProxy').onclick=()=>location.reload()}catch(e){console.info('Update check skipped:',e.message)}}$('copyKey').addEventListener('click',()=>copy(secret)); document.querySelectorAll('[data-copy]').forEach(b=>b.addEventListener('click',()=>copy($(b.dataset.copy).textContent))); Promise.all([init(),loadAuth()]).catch(e=>{$('health').textContent='ERROR';console.error(e)});`;
|
|
56
56
|
|
|
57
57
|
const securityHeaders = Object.freeze({
|
|
58
58
|
'cache-control': 'no-store',
|
package/version.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
|
-
"latest": "2.3.
|
|
2
|
+
"latest": "2.3.4",
|
|
3
3
|
"minSupported": "2.3.0",
|
|
4
4
|
"releasedAt": "2026-09-13T06:30:00Z",
|
|
5
|
-
"releaseNotesUrl": "https://github.com/khangtudo/aki-pro-max/releases/tag/v2.3.
|
|
5
|
+
"releaseNotesUrl": "https://github.com/khangtudo/aki-pro-max/releases/tag/v2.3.4",
|
|
6
6
|
"installPackage": "aki-pro-max",
|
|
7
7
|
"updateCommand": "npm install -g aki-pro-max@latest"
|
|
8
8
|
}
|
package/.env.example
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
PROVIDER_HOST=127.0.0.1
|
|
2
|
-
PROVIDER_PORT=8787
|
|
3
|
-
PROVIDER_API_KEY=replace-with-9router-to-facade-bearer
|
|
4
|
-
PROVIDER_MODELS=replace-with-explicit-postman-model-id
|
|
5
|
-
POSTMAN_WORKSPACE_ID=replace-with-workspace-id
|
|
6
|
-
|
|
7
|
-
# Strategy must be explicit for web_session. Default remains access_token when this field is absent.
|
|
8
|
-
POSTMAN_TRANSPORT_STRATEGY=access_token
|
|
9
|
-
POSTMAN_ORIGIN=https://gateway.postman.com
|
|
10
|
-
POSTMAN_CHAT_PATH=/chat
|
|
11
|
-
POSTMAN_ACCESS_TOKEN=replace-with-authorized-upstream-token
|
|
12
|
-
POSTMAN_APP_VERSION=offline-adapter/0.1.0
|
|
13
|
-
|
|
14
|
-
# Mutually exclusive web_session example (comment out access-token-only fields above first):
|
|
15
|
-
# POSTMAN_TRANSPORT_STRATEGY=web_session
|
|
16
|
-
# POSTMAN_SESSION_COOKIE=your_session_cookie_here
|
|
17
|
-
# POSTMAN_WORKSPACE_SUBDOMAIN=replace-with-lowercase-workspace-subdomain
|
|
18
|
-
# POSTMAN_WEB_SESSION_SELECTED_MODEL=replace-with-operator-pinned-upstream-model
|
|
19
|
-
# Optional exact observed response labels. Present-but-unlisted labels fail closed; absent labels stay unverified.
|
|
20
|
-
# POSTMAN_WEB_SESSION_OBSERVED_MODELS=gpt-5.6-sol
|
|
21
|
-
# POSTMAN_APP_VERSION=
|
|
22
|
-
|
|
23
|
-
# Optional authoritative catalog metadata for access_token tools. Leave hash/exclusions unset until sourced.
|
|
24
|
-
POSTMAN_PLATFORM=OPENAI_COMPATIBLE_ADAPTER
|
|
25
|
-
# POSTMAN_NATIVE_TOOLS_HASH=
|
|
26
|
-
# POSTMAN_EXCLUDED_TOOLS=readFile,webSearch
|
|
27
|
-
REQUEST_TIMEOUT_MS=120000
|
|
28
|
-
MAX_BODY_BYTES=1048576
|
|
29
|
-
MAX_EVENT_BYTES=1048576
|
|
30
|
-
MAX_OUTPUT_BYTES=4194304
|
|
31
|
-
MAX_TOOL_ARGUMENT_BYTES=262144
|
|
32
|
-
MAX_TOOLS=64
|
|
33
|
-
MAX_CONCURRENT_REQUESTS=16
|
|
34
|
-
EXPOSE_HEALTH_DETAILS=false
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
# Danh mục Toàn diện các Native Tool Call của AICoworker
|
|
2
|
-
|
|
3
|
-
> Cập nhật cho hệ thống **Aki Pro Max** (Postman OpenAI Facade / PMN Gateway)
|
|
4
|
-
> Phiên bản AICoworker: 2026.6.27 | OpenClaw: 2026.3.13
|
|
5
|
-
|
|
6
|
-
AICoworker cung cấp tổng cộng **36 native tools** cốt lõi được phân chia thành **8 nhóm năng lực** tác vụ chuyên biệt.
|
|
7
|
-
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
## 1. File Operations & Coding (Thao tác Tệp & Lập trình)
|
|
11
|
-
- `read`: Đọc nội dung tệp tin văn bản hoặc đính kèm trực tiếp hình ảnh (png, jpg, gif, webp) vào ngữ cảnh thị giác đa phương thức của model.
|
|
12
|
-
- `write`: Tạo mới hoặc ghi đè toàn bộ tệp tin trong workspace.
|
|
13
|
-
- `edit`: Sửa phẫu thuật chính xác một đoạn văn bản (`oldText` -> `newText`), giữ nguyên toàn bộ cấu trúc còn lại.
|
|
14
|
-
- `ripgrep`: Tìm kiếm regex tốc độ cao đa luồng trên toàn bộ cây thư mục/tệp tin.
|
|
15
|
-
|
|
16
|
-
## 2. Shell & Process Execution (Thực thi Lệnh & Tiến trình)
|
|
17
|
-
- `exec`: Thực thi lệnh shell (hỗ trợ cả đồng bộ chờ kết quả, bất đồng bộ chạy nền `background: true`, và terminal giả lập `pty: true`).
|
|
18
|
-
- `process`: Quản lý tương tác với các tiến trình chạy nền (list, poll, log, write stdin, send-keys, submit, paste, kill).
|
|
19
|
-
|
|
20
|
-
## 3. Web Research & Browser Automation (Nghiên cứu Web & Trình duyệt)
|
|
21
|
-
- `web_search`: Tìm kiếm web thời gian thực qua Brave Search API.
|
|
22
|
-
- `web_fetch`: Tải và trích xuất nội dung văn bản/markdown sạch từ bất kỳ URL nào mà không cần render trình duyệt nặng.
|
|
23
|
-
- `searxng_search`: Metasearch nội bộ tự host qua SearXNG (tối ưu hóa cao cho tiếng Việt, Arxiv, GitHub, StackOverflow, Wikipedia).
|
|
24
|
-
- `browser`: Điều khiển trình duyệt thật (Playwright/Chromium: mở trang, đọc DOM snapshot, click, gõ text, upload, download, bắt & replay network request).
|
|
25
|
-
|
|
26
|
-
## 4. Adaptive UI & Interactive Visuals (Giao diện Tương tác Chat)
|
|
27
|
-
- `show_adaptive_ui`: Hiển thị thẻ giao diện trực quan phong phú ngay trong khung chat (hỗ trợ 12 biến thể: charts, map, gallery, table, timeline, diagram mermaid, dashboard KPI, compare, diff, tabs, report, card).
|
|
28
|
-
- `ask_user_question`: Hiển thị wizard câu hỏi tương tác để người dùng nhập/chọn (choice, text, textarea, password, number, slider, file).
|
|
29
|
-
- `canvas`: Trình chiếu và điều khiển canvas giao diện tương tác độc lập (A2UI, present, eval, snapshot).
|
|
30
|
-
|
|
31
|
-
## 5. Multi-Agent Rooms & Collaboration (Phối hợp Đa Agent)
|
|
32
|
-
- `agents_list`: Khám phá danh sách các agent đồng nghiệp trong hệ thống (id, tên, bio năng lực chuyên biệt).
|
|
33
|
-
- `room_delegate`: Ủy quyền tác vụ con cho một agent chuyên trách trong phòng chat chung (`@agent`).
|
|
34
|
-
- `room_state`: Bảng ghi nhớ dùng chung (key/value scratchpad) giữa tất cả các agent trong cùng phòng chat.
|
|
35
|
-
- `sessions_spawn`: Khởi tạo sub-agent độc lập để thực hiện tác vụ song song.
|
|
36
|
-
- `sessions_yield`: Nhường lượt để chờ kết quả trả về từ các sub-agent.
|
|
37
|
-
- `subagents`: Giám sát và điều phối các sub-agent đang chạy (list, steer, kill).
|
|
38
|
-
- `sessions_list`: Liệt kê các phiên làm việc và sub-agent theo bộ lọc.
|
|
39
|
-
- `sessions_history`: Đọc lịch sử tin nhắn của một phiên làm việc khác.
|
|
40
|
-
- `sessions_send`: Gửi tin nhắn liên phiên tới agent khác.
|
|
41
|
-
|
|
42
|
-
## 6. Memory & Knowledge Management (Bộ nhớ & Tri thức Dài hạn)
|
|
43
|
-
- `memory_search`: Tìm kiếm ngữ nghĩa trong kho tri thức dài hạn (`MEMORY.md`, `memory/*.md`).
|
|
44
|
-
- `memory_get`: Đọc an toàn các đoạn trích từ bộ nhớ dựa trên kết quả tìm kiếm.
|
|
45
|
-
|
|
46
|
-
## 7. Task Planning & Standard Operating Procedures (Kế hoạch & Quy trình)
|
|
47
|
-
- `plan_task`: Lập kế hoạch thiết kế có cấu trúc vào `PLAN.md` trước khi thực thi tác vụ phức tạp (restate, approach, risks, criteria).
|
|
48
|
-
- `write_todos`: Ghi và cập nhật tiến độ công việc từng bước vào `TODO.md`.
|
|
49
|
-
- `workflow_run`: Khởi chạy một Agent Workflow (SOP / quy trình định sẵn theo đồ thị markdown).
|
|
50
|
-
- `workflow_distill`: Đúc kết lịch sử phiên làm việc thành quy trình Agent Workflow mẫu.
|
|
51
|
-
|
|
52
|
-
## 8. Gateway, Devices & Utilities (Hạ tầng, Thiết bị & Tiện ích)
|
|
53
|
-
- `gateway`: Quản trị Gateway OpenClaw (restart, config.get, config.patch, config.apply, update).
|
|
54
|
-
- `session_status`: Xem trạng thái phiên, mức sử dụng token, thời gian và chi phí.
|
|
55
|
-
- `nodes`: Khám phá và điều khiển các node/thiết bị kết nối (camera, chụp màn hình, gửi thông báo, định vị GPS).
|
|
56
|
-
- `cron`: Quản lý các tác vụ định kỳ Gateway cron và sự kiện hẹn giờ wake.
|
|
57
|
-
- `message`: Gửi, nhận và quản lý tin nhắn đa kênh (Telegram, Discord, Zalo, v.v.).
|
|
58
|
-
- `tts`: Chuyển đổi văn bản thành giọng nói (Text-To-Speech).
|
|
59
|
-
- `mark_context_wasted`: Tối ưu hóa ngữ cảnh, gắn cờ các tool output đã dùng xong để loại bỏ bớt token dư thừa.
|
|
60
|
-
- `advisor`: Tham vấn model đánh giá chiến lược cấp cao khi gặp bài toán khó hoặc trước khi hoàn thành công việc.
|
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"schema": "live-two-model-tools-evidence/v1",
|
|
3
|
-
"runId": "7a400eb2-17e5-4633-8389-8239b91b2087",
|
|
4
|
-
"startedWithPriorCurrentProbeAttempts": 0,
|
|
5
|
-
"origin": "https://akimax6.postman.co",
|
|
6
|
-
"path": "/_gw/chat",
|
|
7
|
-
"workspaceId": "358aa6cf-3b60-449f-8981-c60263000413",
|
|
8
|
-
"policy": {
|
|
9
|
-
"retry": false,
|
|
10
|
-
"failover": false,
|
|
11
|
-
"totalLimit": 6,
|
|
12
|
-
"perModelLimit": 3
|
|
13
|
-
},
|
|
14
|
-
"budget": {
|
|
15
|
-
"used": 4,
|
|
16
|
-
"byModel": {
|
|
17
|
-
"gpt-5.6-sol": 2,
|
|
18
|
-
"claude-opus-4-8": 2
|
|
19
|
-
}
|
|
20
|
-
},
|
|
21
|
-
"branches": [
|
|
22
|
-
{
|
|
23
|
-
"key": "gpt-sol",
|
|
24
|
-
"publicModel": "gpt-5.6-sol",
|
|
25
|
-
"selectedModel": "GPT_56_SOL",
|
|
26
|
-
"facadePort": 52936,
|
|
27
|
-
"initial": {
|
|
28
|
-
"facadeStatus": 200,
|
|
29
|
-
"errorCode": null,
|
|
30
|
-
"toolCallCount": 1,
|
|
31
|
-
"toolName": "get_probe_value",
|
|
32
|
-
"argumentsValid": true,
|
|
33
|
-
"argumentsDiagnostic": {
|
|
34
|
-
"argsType": "string",
|
|
35
|
-
"argsBytes": 2,
|
|
36
|
-
"parsedType": "object",
|
|
37
|
-
"keyCount": 0,
|
|
38
|
-
"parseError": null
|
|
39
|
-
},
|
|
40
|
-
"exactlyOneValidToolCall": true
|
|
41
|
-
},
|
|
42
|
-
"continuation": {
|
|
43
|
-
"facadeStatus": 200,
|
|
44
|
-
"errorCode": null,
|
|
45
|
-
"finalContentPresent": true
|
|
46
|
-
},
|
|
47
|
-
"observedModels": [
|
|
48
|
-
"gpt-5.6-sol",
|
|
49
|
-
"GPT_56_SOL"
|
|
50
|
-
],
|
|
51
|
-
"finalMatchesMarker": true,
|
|
52
|
-
"cleanup": true,
|
|
53
|
-
"terminal": "completed_match",
|
|
54
|
-
"error": null
|
|
55
|
-
},
|
|
56
|
-
{
|
|
57
|
-
"key": "claude-opus",
|
|
58
|
-
"publicModel": "claude-opus-4-8",
|
|
59
|
-
"selectedModel": "CLAUDE_OPUS_48_BEDROCK",
|
|
60
|
-
"facadePort": 51370,
|
|
61
|
-
"initial": {
|
|
62
|
-
"facadeStatus": 200,
|
|
63
|
-
"errorCode": null,
|
|
64
|
-
"toolCallCount": 1,
|
|
65
|
-
"toolName": "get_probe_value",
|
|
66
|
-
"argumentsValid": true,
|
|
67
|
-
"argumentsDiagnostic": {
|
|
68
|
-
"argsType": "string",
|
|
69
|
-
"argsBytes": 0,
|
|
70
|
-
"parsedType": "object",
|
|
71
|
-
"keyCount": 0,
|
|
72
|
-
"parseError": null
|
|
73
|
-
},
|
|
74
|
-
"exactlyOneValidToolCall": true
|
|
75
|
-
},
|
|
76
|
-
"continuation": {
|
|
77
|
-
"facadeStatus": 200,
|
|
78
|
-
"errorCode": null,
|
|
79
|
-
"finalContentPresent": true
|
|
80
|
-
},
|
|
81
|
-
"observedModels": [
|
|
82
|
-
"claude-opus-4-8",
|
|
83
|
-
"CLAUDE_OPUS_48_BEDROCK",
|
|
84
|
-
"global.anthropic.claude-opus-4-8"
|
|
85
|
-
],
|
|
86
|
-
"finalMatchesMarker": true,
|
|
87
|
-
"cleanup": true,
|
|
88
|
-
"terminal": "completed_match",
|
|
89
|
-
"error": null
|
|
90
|
-
}
|
|
91
|
-
],
|
|
92
|
-
"allServersCleaned": true,
|
|
93
|
-
"generatedAt": "2026-09-13T00:22:23.559Z"
|
|
94
|
-
}
|
package/FULL-TRACE-EVIDENCE.json
DELETED
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"window": [
|
|
3
|
-
"2026-09-13T02:22:30.000Z",
|
|
4
|
-
"2026-09-13T02:24:30.000Z"
|
|
5
|
-
],
|
|
6
|
-
"rows": [
|
|
7
|
-
{
|
|
8
|
-
"id": 86668,
|
|
9
|
-
"timestamp": "2026-09-13T02:22:38.074Z",
|
|
10
|
-
"provider": "openai-compatible-chat-7315cf02-aba5-4c66-a886-044054c49883",
|
|
11
|
-
"model": "gpt-5.6-sol",
|
|
12
|
-
"connectionId": "27b72dc7-4a15-4b8a-815b-71f7839e5f2b",
|
|
13
|
-
"endpoint": "/v1/chat/completions",
|
|
14
|
-
"promptTokens": 278247,
|
|
15
|
-
"completionTokens": 188,
|
|
16
|
-
"status": "ok",
|
|
17
|
-
"tokens": "{\"prompt_tokens\":278247,\"completion_tokens\":188,\"total_tokens\":278435,\"cached_tokens\":45824,\"cache_creation_input_tokens\":0}",
|
|
18
|
-
"meta": "{}"
|
|
19
|
-
},
|
|
20
|
-
{
|
|
21
|
-
"id": 86669,
|
|
22
|
-
"timestamp": "2026-09-13T02:22:48.349Z",
|
|
23
|
-
"provider": "openai-compatible-chat-7315cf02-aba5-4c66-a886-044054c49883",
|
|
24
|
-
"model": "gpt-5.6-sol",
|
|
25
|
-
"connectionId": "27b72dc7-4a15-4b8a-815b-71f7839e5f2b",
|
|
26
|
-
"endpoint": "/v1/chat/completions",
|
|
27
|
-
"promptTokens": 278504,
|
|
28
|
-
"completionTokens": 67,
|
|
29
|
-
"status": "ok",
|
|
30
|
-
"tokens": "{\"prompt_tokens\":278504,\"completion_tokens\":67,\"total_tokens\":278571,\"cached_tokens\":278144,\"cache_creation_input_tokens\":0}",
|
|
31
|
-
"meta": "{}"
|
|
32
|
-
},
|
|
33
|
-
{
|
|
34
|
-
"id": 86670,
|
|
35
|
-
"timestamp": "2026-09-13T02:23:03.031Z",
|
|
36
|
-
"provider": "openai-compatible-chat-7315cf02-aba5-4c66-a886-044054c49883",
|
|
37
|
-
"model": "gpt-5.6-sol",
|
|
38
|
-
"connectionId": "27b72dc7-4a15-4b8a-815b-71f7839e5f2b",
|
|
39
|
-
"endpoint": "/v1/chat/completions",
|
|
40
|
-
"promptTokens": 278782,
|
|
41
|
-
"completionTokens": 57,
|
|
42
|
-
"status": "ok",
|
|
43
|
-
"tokens": "{\"prompt_tokens\":278782,\"completion_tokens\":57,\"total_tokens\":278839,\"cached_tokens\":278400,\"cache_creation_input_tokens\":0}",
|
|
44
|
-
"meta": "{}"
|
|
45
|
-
},
|
|
46
|
-
{
|
|
47
|
-
"id": 86671,
|
|
48
|
-
"timestamp": "2026-09-13T02:23:14.987Z",
|
|
49
|
-
"provider": "openai-compatible-chat-7315cf02-aba5-4c66-a886-044054c49883",
|
|
50
|
-
"model": "gpt-5.6-sol",
|
|
51
|
-
"connectionId": "27b72dc7-4a15-4b8a-815b-71f7839e5f2b",
|
|
52
|
-
"endpoint": "/v1/chat/completions",
|
|
53
|
-
"promptTokens": 278039,
|
|
54
|
-
"completionTokens": 129,
|
|
55
|
-
"status": "ok",
|
|
56
|
-
"tokens": "{\"prompt_tokens\":278039,\"completion_tokens\":129,\"total_tokens\":278168,\"cached_tokens\":45824,\"cache_creation_input_tokens\":0}",
|
|
57
|
-
"meta": "{}"
|
|
58
|
-
},
|
|
59
|
-
{
|
|
60
|
-
"id": 86672,
|
|
61
|
-
"timestamp": "2026-09-13T02:23:23.283Z",
|
|
62
|
-
"provider": "openai-compatible-chat-327ad9bd-0918-4921-b3c1-213b244ee54f",
|
|
63
|
-
"model": "gpt-5.6-sol",
|
|
64
|
-
"connectionId": "6706879a-9897-4b2a-9142-728ca64276d4",
|
|
65
|
-
"endpoint": "/v1/chat/completions",
|
|
66
|
-
"promptTokens": 46410,
|
|
67
|
-
"completionTokens": 4,
|
|
68
|
-
"status": "ok",
|
|
69
|
-
"tokens": "{\"prompt_tokens\":46410,\"completion_tokens\":4,\"total_tokens\":46414,\"cached_tokens\":0,\"cache_creation_input_tokens\":0}",
|
|
70
|
-
"meta": "{}"
|
|
71
|
-
},
|
|
72
|
-
{
|
|
73
|
-
"id": 86673,
|
|
74
|
-
"timestamp": "2026-09-13T02:23:24.702Z",
|
|
75
|
-
"provider": "openai-compatible-chat-7315cf02-aba5-4c66-a886-044054c49883",
|
|
76
|
-
"model": "gpt-5.6-sol",
|
|
77
|
-
"connectionId": "27b72dc7-4a15-4b8a-815b-71f7839e5f2b",
|
|
78
|
-
"endpoint": "/v1/chat/completions",
|
|
79
|
-
"promptTokens": 278269,
|
|
80
|
-
"completionTokens": 68,
|
|
81
|
-
"status": "ok",
|
|
82
|
-
"tokens": "{\"prompt_tokens\":278269,\"completion_tokens\":68,\"total_tokens\":278337,\"cached_tokens\":277888,\"cache_creation_input_tokens\":0}",
|
|
83
|
-
"meta": "{}"
|
|
84
|
-
}
|
|
85
|
-
],
|
|
86
|
-
"connections": {
|
|
87
|
-
"27b72dc7-4a15-4b8a-815b-71f7839e5f2b": {
|
|
88
|
-
"id": "27b72dc7-4a15-4b8a-815b-71f7839e5f2b",
|
|
89
|
-
"provider": "openai-compatible-chat-7315cf02-aba5-4c66-a886-044054c49883",
|
|
90
|
-
"name": "CPX",
|
|
91
|
-
"priority": 1,
|
|
92
|
-
"isActive": 1
|
|
93
|
-
},
|
|
94
|
-
"pmn-openai-provider-local": {
|
|
95
|
-
"id": "pmn-openai-provider-local",
|
|
96
|
-
"provider": "openai-compatible-chat-aki-pro-max",
|
|
97
|
-
"name": "Aki Pro Max Local Gateway",
|
|
98
|
-
"priority": 1,
|
|
99
|
-
"isActive": 1
|
|
100
|
-
},
|
|
101
|
-
"6706879a-9897-4b2a-9142-728ca64276d4": {
|
|
102
|
-
"id": "6706879a-9897-4b2a-9142-728ca64276d4",
|
|
103
|
-
"provider": "openai-compatible-chat-327ad9bd-0918-4921-b3c1-213b244ee54f",
|
|
104
|
-
"name": "Aki Pro Max Local",
|
|
105
|
-
"priority": 1,
|
|
106
|
-
"isActive": 1
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
}
|
package/ISSUE-1-REMOTE.json
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"body":"## Evidence\n\nThe bounded live probe for `claude-opus-4-8` selected `CLAUDE_OPUS_48_BEDROCK` and received HTTP 502 before any tool call. GPT-5.6 Sol completed the equivalent tool loop.\n\n## Current boundary\n\nThis issue does **not** affect the advertised model catalog or offline contracts, but Claude live compatibility is not claimed in v0.1.0-beta.1.\n\n## Investigation checklist\n\n- Capture sanitized upstream error code/model observation without cookie, prompts or response body.\n- Compare the currently observed allowlisted model label against the configured foodcode.\n- Verify whether mismatch is gateway mapping, workspace availability or upstream rollout.\n- Add a bounded live regression only after the accepted label is source-observed.","closedAt":"2026-09-13T03:23:15Z","comments":[{"id":"IC_kwDOUX4nN88AAAABUIPUTg","author":{"login":"khangtudo"},"authorAssociation":"OWNER","body":"## Root cause found and bounded live retest\n\nThe live upstream model observation is `global.anthropic.claude-opus-4-8` in `metadata.model`, while the allowlist previously contained only `claude-opus-4-8` and `CLAUDE_OPUS_48_BEDROCK`. Diagnostic propagation now records the bounded observed model and field path for this error class without dumping upstream content.\n\nAfter adding the source-observed label to the local allowlist, a one-shot live non-tool Claude request returned HTTP 200 with the exact marker. This confirms the mismatch root cause and text-generation compatibility.\n\n**Remaining acceptance item:** the issue asks for a complete Claude tool-call → local tool result → final answer loop. That exact tool loop has not yet been rerun after the allowlist correction, so this issue remains open.","createdAt":"2026-09-12T12:08:09Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[],"url":"https://github.com/khangtudo/aki-pro-max/issues/1#issuecomment-5645784142","viewerDidAuthor":true},{"id":"IC_kwDOUX4nN88AAAABUJJTqg","author":{"login":"khangtudo"},"authorAssociation":"OWNER","body":"## Patch/release progress — v0.1.0-beta.8\n\nThe Main-agent compatibility patch for OpenClaw tool schemas has been independently gated and published:\n\n- Added recursive `patternProperties` validation used by `exec.env`.\n- Added focused regression coverage for valid nested schema, malformed container, and unsupported nested keyword.\n- Current suite: 97/97 pass; release secret scanner and positive control pass.\n- Current 34-tool OpenClaw schema census has no unhandled keyword; the original full-context streaming replay succeeded direct and through PMN/9router.\n- Trio Verifiers: 17.43/20, StdDev 0.40.\n- Release: https://github.com/khangtudo/aki-pro-max/releases/tag/v0.1.0-beta.8\n- Commit: 8f43c5b27bcbd6a3f292211e09315fc6ac931189\n\nThis patch removes the schema-validation blocker that caused agent requests to abort, but issue #1 remains open until its original Claude full tool-loop acceptance is linked and verified. Claude argument conformance remains tracked in #4.","createdAt":"2026-09-12T15:11:39Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[],"url":"https://github.com/khangtudo/aki-pro-max/issues/1#issuecomment-5646734250","viewerDidAuthor":true},{"id":"IC_kwDOUX4nN88AAAABUM8k3Q","author":{"login":"khangtudo"},"authorAssociation":"OWNER","body":"Resolved and live-verified in `172e7e6009c6f8b8fb9b1ddd26273f70fa12bb07`.\n\nClosure evidence:\n- Fresh Claude Opus 4.8 tool loop selected `CLAUDE_OPUS_48_BEDROCK`.\n- Initial request HTTP 200, exactly one valid native tool call, `argumentsValid=true`.\n- Same-session continuation HTTP 200 and exact final marker; terminal `completed_match`.\n- Release suite: 97/97 pass; release verifier secret scan and positive control pass.\n- Trio gate: 17.43/20, StdDev 0.40.\n\nArtifacts: `CLAUDE-LIVE-TOOLS-EVIDENCE.json`, `TEST-ISSUES12-FINAL.txt`, `VERIFIER-ISSUES12-FINAL.txt`.","createdAt":"2026-09-13T03:23:15Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[],"url":"https://github.com/khangtudo/aki-pro-max/issues/1#issuecomment-5650719965","viewerDidAuthor":true}],"number":1,"state":"CLOSED","title":"Known issue: Claude Opus live web-session selection returns upstream model mismatch","url":"https://github.com/khangtudo/aki-pro-max/issues/1"}
|
package/ISSUE-2-POSTREVIEW.json
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"comments":[{"id":"IC_kwDOUX4nN88AAAABUIPUvg","author":{"login":"khangtudo"},"authorAssociation":"OWNER","body":"## Real AICoworker runtime trace attempted\n\nA real AICoworker `sessions_spawn` was configured to use the PMN route through 9router. The request reached the upstream/provider path but failed with `403 Access denied: service error` before returning the distinctive marker. No mock or fallback was used.\n\nDuring read-only 9router inspection, an old local facade key was accidentally printed to the private tool transcript. It was immediately rotated in both the provider `.env` and 9router PMN connection. Verification: old key now returns 401, new key returns 200, health returns 200. No key was posted to GitHub.\n\n**Current blocker:** PMN/9router upstream authentication/routing returns 403 from the AICoworker runtime. The full marker round trip is therefore not complete and this issue remains open.","createdAt":"2026-09-12T12:08:10Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[],"url":"https://github.com/khangtudo/aki-pro-max/issues/2#issuecomment-5645784254","viewerDidAuthor":true},{"id":"IC_kwDOUX4nN88AAAABUISuyw","author":{"login":"khangtudo"},"authorAssociation":"OWNER","body":"## Evidence correction\n\nThe AICoworker subagent returned the exact distinctive marker, but the persisted session record identifies the model as `CPX/gpt-5.6-sol`, not PMN. Therefore this output alone is **not sufficient proof** that 9router/Aki Pro Max carried the request. The prior PMN attempt also recorded an upstream 403. Issue #2 remains open pending component-level routing evidence.\n\nA private sanitized record stores only the marker hash/prefix and model metadata; no credentials or raw upstream content.","createdAt":"2026-09-12T12:19:32Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[],"url":"https://github.com/khangtudo/aki-pro-max/issues/2#issuecomment-5645840075","viewerDidAuthor":true},{"id":"IC_kwDOUX4nN88AAAABUIrpdQ","author":{"login":"khangtudo"},"authorAssociation":"OWNER","body":"## Root cause fixed: official 9router custom provider registration\n\nThe previous PMN row was an orphan connection: it referenced `openai-compatible-chat-postman2api`, but no matching `providerNodes` entry existed, so it was absent from the GUI/runtime provider registry.\n\nRepair completed through 9router's authenticated official APIs:\n\n- Created custom provider node `Aki Pro Max Local`, prefix `PMN`, chat API, base URL `http://127.0.0.1:8788/v1`.\n- Created an active connection bound to that node using the rotated facade key.\n- `GET /v1/models` now lists `PMN/gpt-5.6-sol`.\n- Direct 9router `POST /v1/chat/completions` using `PMN/gpt-5.6-sol` returned HTTP 200 and the exact marker.\n- AICoworker subagent configured with PMN returned its exact marker successfully. Session history normalizes to the downstream response model (`CPX/gpt-5.6-sol`), so the direct 9router marker plus official provider registration are the component-level route evidence.\n- Temporary Wi Ha PMN model/allowlist changes were restored to CPX after the test.\n\nAcceptance is met for the live chain. Note: 9router did not persist a usageHistory row under the newly created connection ID for this short test, so evidence relies on authenticated provider registry + routable catalog + exact direct route marker + AICoworker marker rather than usage accounting.","createdAt":"2026-09-12T13:41:59Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[],"url":"https://github.com/khangtudo/aki-pro-max/issues/2#issuecomment-5646248309","viewerDidAuthor":true},{"id":"IC_kwDOUX4nN88AAAABUIrp7w","author":{"login":"khangtudo"},"authorAssociation":"OWNER","body":"Closed after official PMN provider registration and successful direct 9router plus AICoworker marker tests. The orphan provider registration was the root cause.","createdAt":"2026-09-12T13:42:01Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[],"url":"https://github.com/khangtudo/aki-pro-max/issues/2#issuecomment-5646248431","viewerDidAuthor":true},{"id":"IC_kwDOUX4nN88AAAABUIsSag","author":{"login":"khangtudo"},"authorAssociation":"OWNER","body":"## Closure correction\n\nReopened after final review. The orphan provider registration is fixed and direct 9router PMN routing is verified, but AICoworker end-to-end attribution is not yet conclusive: session history normalizes the response model to CPX and no usageHistory/requestDetails row was persisted for the new PMN connection during the marker window. The exact marker therefore proves output success but does not independently exclude silent fallback.\n\nRemaining exit criterion: capture a request/log row tied to the new PMN connection ID, or rerun with CPX unavailable and PMN still returning the exact marker.","createdAt":"2026-09-12T13:44:09Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[],"url":"https://github.com/khangtudo/aki-pro-max/issues/2#issuecomment-5646258794","viewerDidAuthor":true},{"id":"IC_kwDOUX4nN88AAAABUItwag","author":{"login":"khangtudo"},"authorAssociation":"OWNER","body":"## Attribution boundary clarification\n\nThe green marker tests prove **registration and reachability**, not production session attribution:\n\n- Official PMN custom provider node/connection exists.\n- PMN appears in the router catalog.\n- Direct router request addressed as `PMN/gpt-5.6-sol` returns the exact marker.\n- A temporary AICoworker PMN configuration also returned the exact marker.\n\nWhat remains unresolved is whether AICoworker production session metadata and metering retain PMN attribution after provider/model normalization. The session record normalizes the response to `CPX/gpt-5.6-sol`, and the queried 9router `usageHistory`/`requestDetails` stores contain no row attributed to the new PMN connection for the test window. This is not proof that routing failed; it is proof that PMN attribution is currently unverified.\n\nBecause the temporary PMN config was restored before raw component metadata/request IDs were captured, that test is not fully reproducible. Exit criterion remains: capture one PMN-addressed AICoworker request with the same request/session ID visible in raw router logs or metering under the PMN connection, and determine where normalization occurs relative to usage emission.","createdAt":"2026-09-12T13:49:00Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[],"url":"https://github.com/khangtudo/aki-pro-max/issues/2#issuecomment-5646282858","viewerDidAuthor":true},{"id":"IC_kwDOUX4nN88AAAABUJJUFg","author":{"login":"khangtudo"},"authorAssociation":"OWNER","body":"## Patch/release progress — v0.1.0-beta.8\n\nThe schema compatibility blocker for OpenClaw tools is fixed and published. PMN custom provider registration and direct 9router reachability were fixed earlier. Issue #2 remains open because production AICoworker→PMN attribution still lacks a durable same-request usage/log record under the PMN connection; beta.8 does not change that boundary.","createdAt":"2026-09-12T15:11:41Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[],"url":"https://github.com/khangtudo/aki-pro-max/issues/2#issuecomment-5646734358","viewerDidAuthor":true},{"id":"IC_kwDOUX4nN88AAAABUM8mWQ","author":{"login":"khangtudo"},"authorAssociation":"OWNER","body":"Resolved and independently attributed in `172e7e6009c6f8b8fb9b1ddd26273f70fa12bb07`.\n\nClosure evidence:\n- Fresh AICoworker subagent explicitly used `provider=pmn`, `model=PMN/gpt-5.6-sol` and returned the exact four-token marker.\n- Matching 9router usage row `86672` at `2026-09-13T02:23:23.283Z` used connection `6706879a-9897-4b2a-9142-728ca64276d4`, mapped to `Aki Pro Max Local`, status `ok`, completion tokens `4`.\n- CPX remained active and served surrounding unrelated requests, so this is not a disable-CPX negative test.\n- Trio gate: 17.43/20, StdDev 0.40.\n\nArtifacts: `FULL-TRACE-EVIDENCE.json`, `VERIFIER-ISSUES12-FINAL.txt`, updated `docs/CAPABILITY-MATRIX.md`.","createdAt":"2026-09-13T03:23:17Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[],"url":"https://github.com/khangtudo/aki-pro-max/issues/2#issuecomment-5650720345","viewerDidAuthor":true},{"id":"IC_kwDOUX4nN88AAAABUNBuvQ","author":{"login":"khangtudo"},"authorAssociation":"OWNER","body":"Post-closure independent review found that the committed evidence proves provider attribution and the exact marker, but does **not** satisfy every item in this issue's stricter acceptance checklist. Missing from one correlated production trace: proof of exactly one bounded Postman dispatch, tool-call continuation/session affinity, an auth-failure leg, component versions, and a request ID shared end-to-end.\n\nTo keep issue state honest, reopening. The PMN provider-id collision remains fixed and verified; this issue now tracks only the remaining full-chain evidence matrix.","createdAt":"2026-09-13T03:32:27Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[],"url":"https://github.com/khangtudo/aki-pro-max/issues/2#issuecomment-5650804413","viewerDidAuthor":true}],"number":2,"state":"OPEN","url":"https://github.com/khangtudo/aki-pro-max/issues/2"}
|
package/ISSUE-2-REMOTE.json
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"body":"## Goal\n\nDemonstrate one sanitized end-to-end trace through the complete production chain without mocks or fallback.\n\n## Acceptance checklist\n\n- AICoworker sends an authenticated request through 9router.\n- 9router selects the Aki Pro Max node and credential slot.\n- Aki Pro Max dispatches exactly one bounded live Postman request.\n- A distinctive prompt marker returns through the same chain.\n- Tool-call continuation, session affinity and auth failures are recorded without secrets.\n- Evidence includes timestamps, component versions and request IDs, not raw credentials or prompts.","closedAt":"2026-09-13T03:23:18Z","comments":[{"id":"IC_kwDOUX4nN88AAAABUIPUvg","author":{"login":"khangtudo"},"authorAssociation":"OWNER","body":"## Real AICoworker runtime trace attempted\n\nA real AICoworker `sessions_spawn` was configured to use the PMN route through 9router. The request reached the upstream/provider path but failed with `403 Access denied: service error` before returning the distinctive marker. No mock or fallback was used.\n\nDuring read-only 9router inspection, an old local facade key was accidentally printed to the private tool transcript. It was immediately rotated in both the provider `.env` and 9router PMN connection. Verification: old key now returns 401, new key returns 200, health returns 200. No key was posted to GitHub.\n\n**Current blocker:** PMN/9router upstream authentication/routing returns 403 from the AICoworker runtime. The full marker round trip is therefore not complete and this issue remains open.","createdAt":"2026-09-12T12:08:10Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[],"url":"https://github.com/khangtudo/aki-pro-max/issues/2#issuecomment-5645784254","viewerDidAuthor":true},{"id":"IC_kwDOUX4nN88AAAABUISuyw","author":{"login":"khangtudo"},"authorAssociation":"OWNER","body":"## Evidence correction\n\nThe AICoworker subagent returned the exact distinctive marker, but the persisted session record identifies the model as `CPX/gpt-5.6-sol`, not PMN. Therefore this output alone is **not sufficient proof** that 9router/Aki Pro Max carried the request. The prior PMN attempt also recorded an upstream 403. Issue #2 remains open pending component-level routing evidence.\n\nA private sanitized record stores only the marker hash/prefix and model metadata; no credentials or raw upstream content.","createdAt":"2026-09-12T12:19:32Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[],"url":"https://github.com/khangtudo/aki-pro-max/issues/2#issuecomment-5645840075","viewerDidAuthor":true},{"id":"IC_kwDOUX4nN88AAAABUIrpdQ","author":{"login":"khangtudo"},"authorAssociation":"OWNER","body":"## Root cause fixed: official 9router custom provider registration\n\nThe previous PMN row was an orphan connection: it referenced `openai-compatible-chat-postman2api`, but no matching `providerNodes` entry existed, so it was absent from the GUI/runtime provider registry.\n\nRepair completed through 9router's authenticated official APIs:\n\n- Created custom provider node `Aki Pro Max Local`, prefix `PMN`, chat API, base URL `http://127.0.0.1:8788/v1`.\n- Created an active connection bound to that node using the rotated facade key.\n- `GET /v1/models` now lists `PMN/gpt-5.6-sol`.\n- Direct 9router `POST /v1/chat/completions` using `PMN/gpt-5.6-sol` returned HTTP 200 and the exact marker.\n- AICoworker subagent configured with PMN returned its exact marker successfully. Session history normalizes to the downstream response model (`CPX/gpt-5.6-sol`), so the direct 9router marker plus official provider registration are the component-level route evidence.\n- Temporary Wi Ha PMN model/allowlist changes were restored to CPX after the test.\n\nAcceptance is met for the live chain. Note: 9router did not persist a usageHistory row under the newly created connection ID for this short test, so evidence relies on authenticated provider registry + routable catalog + exact direct route marker + AICoworker marker rather than usage accounting.","createdAt":"2026-09-12T13:41:59Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[],"url":"https://github.com/khangtudo/aki-pro-max/issues/2#issuecomment-5646248309","viewerDidAuthor":true},{"id":"IC_kwDOUX4nN88AAAABUIrp7w","author":{"login":"khangtudo"},"authorAssociation":"OWNER","body":"Closed after official PMN provider registration and successful direct 9router plus AICoworker marker tests. The orphan provider registration was the root cause.","createdAt":"2026-09-12T13:42:01Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[],"url":"https://github.com/khangtudo/aki-pro-max/issues/2#issuecomment-5646248431","viewerDidAuthor":true},{"id":"IC_kwDOUX4nN88AAAABUIsSag","author":{"login":"khangtudo"},"authorAssociation":"OWNER","body":"## Closure correction\n\nReopened after final review. The orphan provider registration is fixed and direct 9router PMN routing is verified, but AICoworker end-to-end attribution is not yet conclusive: session history normalizes the response model to CPX and no usageHistory/requestDetails row was persisted for the new PMN connection during the marker window. The exact marker therefore proves output success but does not independently exclude silent fallback.\n\nRemaining exit criterion: capture a request/log row tied to the new PMN connection ID, or rerun with CPX unavailable and PMN still returning the exact marker.","createdAt":"2026-09-12T13:44:09Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[],"url":"https://github.com/khangtudo/aki-pro-max/issues/2#issuecomment-5646258794","viewerDidAuthor":true},{"id":"IC_kwDOUX4nN88AAAABUItwag","author":{"login":"khangtudo"},"authorAssociation":"OWNER","body":"## Attribution boundary clarification\n\nThe green marker tests prove **registration and reachability**, not production session attribution:\n\n- Official PMN custom provider node/connection exists.\n- PMN appears in the router catalog.\n- Direct router request addressed as `PMN/gpt-5.6-sol` returns the exact marker.\n- A temporary AICoworker PMN configuration also returned the exact marker.\n\nWhat remains unresolved is whether AICoworker production session metadata and metering retain PMN attribution after provider/model normalization. The session record normalizes the response to `CPX/gpt-5.6-sol`, and the queried 9router `usageHistory`/`requestDetails` stores contain no row attributed to the new PMN connection for the test window. This is not proof that routing failed; it is proof that PMN attribution is currently unverified.\n\nBecause the temporary PMN config was restored before raw component metadata/request IDs were captured, that test is not fully reproducible. Exit criterion remains: capture one PMN-addressed AICoworker request with the same request/session ID visible in raw router logs or metering under the PMN connection, and determine where normalization occurs relative to usage emission.","createdAt":"2026-09-12T13:49:00Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[],"url":"https://github.com/khangtudo/aki-pro-max/issues/2#issuecomment-5646282858","viewerDidAuthor":true},{"id":"IC_kwDOUX4nN88AAAABUJJUFg","author":{"login":"khangtudo"},"authorAssociation":"OWNER","body":"## Patch/release progress — v0.1.0-beta.8\n\nThe schema compatibility blocker for OpenClaw tools is fixed and published. PMN custom provider registration and direct 9router reachability were fixed earlier. Issue #2 remains open because production AICoworker→PMN attribution still lacks a durable same-request usage/log record under the PMN connection; beta.8 does not change that boundary.","createdAt":"2026-09-12T15:11:41Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[],"url":"https://github.com/khangtudo/aki-pro-max/issues/2#issuecomment-5646734358","viewerDidAuthor":true},{"id":"IC_kwDOUX4nN88AAAABUM8mWQ","author":{"login":"khangtudo"},"authorAssociation":"OWNER","body":"Resolved and independently attributed in `172e7e6009c6f8b8fb9b1ddd26273f70fa12bb07`.\n\nClosure evidence:\n- Fresh AICoworker subagent explicitly used `provider=pmn`, `model=PMN/gpt-5.6-sol` and returned the exact four-token marker.\n- Matching 9router usage row `86672` at `2026-09-13T02:23:23.283Z` used connection `6706879a-9897-4b2a-9142-728ca64276d4`, mapped to `Aki Pro Max Local`, status `ok`, completion tokens `4`.\n- CPX remained active and served surrounding unrelated requests, so this is not a disable-CPX negative test.\n- Trio gate: 17.43/20, StdDev 0.40.\n\nArtifacts: `FULL-TRACE-EVIDENCE.json`, `VERIFIER-ISSUES12-FINAL.txt`, updated `docs/CAPABILITY-MATRIX.md`.","createdAt":"2026-09-13T03:23:17Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[],"url":"https://github.com/khangtudo/aki-pro-max/issues/2#issuecomment-5650720345","viewerDidAuthor":true}],"number":2,"state":"CLOSED","title":"Verification: complete AICoworker → 9router → Aki Pro Max → live Postman trace","url":"https://github.com/khangtudo/aki-pro-max/issues/2"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"BackupDir": "C:\\Users\\ADMIN\\aicoworker\\openclaw\\workspace-wiha\\backups\\aki-key-rotation-20260912-184753",
|
|
3
|
-
"OldKeyStatus": 401,
|
|
4
|
-
"NewKeyStatus": 200,
|
|
5
|
-
"Health": 200,
|
|
6
|
-
"Pid": 3640,
|
|
7
|
-
"GitTrackedEnv": false,
|
|
8
|
-
"TranscriptExposure": "Prior read-only SQLite inspection printed old key; old key rotated and now invalid."
|
|
9
|
-
}
|
package/PMN-9ROUTER-FINAL.md
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
# PMN 9router Repair — Final Evidence
|
|
2
|
-
|
|
3
|
-
- Root cause: orphan provider connection without matching custom provider node.
|
|
4
|
-
- Official node: Aki Pro Max Local, prefix PMN, OpenAI-compatible chat, local base URL 8788.
|
|
5
|
-
- Official connection: active and bound to the node through authenticated 9router API.
|
|
6
|
-
- Catalog: PMN/gpt-5.6-sol present.
|
|
7
|
-
- Direct PMN chat: HTTP 200, exact marker matched; this proves registration/reachability, not AICoworker production attribution.
|
|
8
|
-
- AICoworker marker: exact marker returned after temporary PMN configuration. PMN attribution remains unverified because response metadata normalized to CPX and no row attributed to the new PMN connection appeared in the queried usageHistory/requestDetails stores for the test window. The temporary state was restored before raw request IDs were captured, so the run is not fully reproducible.
|
|
9
|
-
- Metadata caveat: AICoworker session history records the downstream response model CPX/gpt-5.6-sol; 9router usage tables did not create a row keyed to the new connection for the short run.
|
|
10
|
-
- Temporary Wi Ha config restored to CPX; config valid.
|
|
11
|
-
- Old orphan row remains in DB but is non-resolvable because its provider node is absent; do not use it. A DB backup exists before repair.
|
|
12
|
-
|
|
13
|
-
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"OnlyChangedTest": "admin.test.mjs",
|
|
3
|
-
"Reason": "Aki Pro Max branding assertion",
|
|
4
|
-
"SourceTestIdentities": 96,
|
|
5
|
-
"StagingTestIdentities": 96,
|
|
6
|
-
"IdentityDiff": 0,
|
|
7
|
-
"FailedAttempt": "rapid-basil",
|
|
8
|
-
"RootCause": "unsafe mechanical literal replacement in test assertions",
|
|
9
|
-
"Prevention": "Do not codemod fixture/assertion literals; re-copy source tests then apply narrow reviewed diff."
|
|
10
|
-
}
|
package/RELEASE-ARCHIVE.json
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"Url": "https://github.com/khangtudo/aki-pro-max",
|
|
3
|
-
"Visibility": "PUBLIC",
|
|
4
|
-
"Branch": "main",
|
|
5
|
-
"DefaultBranch": "main",
|
|
6
|
-
"Tag": "v0.1.0-beta.1",
|
|
7
|
-
"SHA": "8b664aef05277b30a5655840c995ea7cacf993b5",
|
|
8
|
-
"RemoteMainSHA": "8b664aef05277b30a5655840c995ea7cacf993b5",
|
|
9
|
-
"RemoteTagSHA": {
|
|
10
|
-
|
|
11
|
-
},
|
|
12
|
-
"Remote": "https://github.com/khangtudo/aki-pro-max.git",
|
|
13
|
-
"Description": "Local-first OpenAI-compatible gateway and secure control plane for an authorized Postman web session.",
|
|
14
|
-
"Verified": false
|
|
15
|
-
}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"Timestamp": "2026-09-12T18:23:20.3462359+07:00",
|
|
3
|
-
"FlaggedFixtureProvenance": [
|
|
4
|
-
{
|
|
5
|
-
"File": "test/admin-auth.test.mjs",
|
|
6
|
-
"History": [
|
|
7
|
-
"8b664aef05277b30a5655840c995ea7cacf993b5|2026-09-12T18:10:59+07:00|release: Aki Pro Max v0.1.0-beta.1 ΓÇö verified GPT gateway and local control plane"
|
|
8
|
-
]
|
|
9
|
-
},
|
|
10
|
-
{
|
|
11
|
-
"File": "test/admin.test.mjs",
|
|
12
|
-
"History": [
|
|
13
|
-
"8b664aef05277b30a5655840c995ea7cacf993b5|2026-09-12T18:10:59+07:00|release: Aki Pro Max v0.1.0-beta.1 ΓÇö verified GPT gateway and local control plane"
|
|
14
|
-
]
|
|
15
|
-
},
|
|
16
|
-
{
|
|
17
|
-
"File": "test/full-ingress/run-full-ingress.mjs",
|
|
18
|
-
"History": [
|
|
19
|
-
"8b664aef05277b30a5655840c995ea7cacf993b5|2026-09-12T18:10:59+07:00|release: Aki Pro Max v0.1.0-beta.1 ΓÇö verified GPT gateway and local control plane"
|
|
20
|
-
]
|
|
21
|
-
}
|
|
22
|
-
],
|
|
23
|
-
"GitleaksConfigOrIgnoreFiles": [
|
|
24
|
-
|
|
25
|
-
],
|
|
26
|
-
"FullHistory": "--all",
|
|
27
|
-
"Commits": "3",
|
|
28
|
-
"Leaks": 0,
|
|
29
|
-
"Classification": "Synthetic test literals introduced in initial release commit; exact current credentials do not match; Gitleaks no findings."
|
|
30
|
-
}
|
package/TEST-ISSUES12-FINAL.txt
DELETED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
# Aki Pro Max Local Control Plane Contract
|
|
2
|
-
|
|
3
|
-
## Routes
|
|
4
|
-
- `GET /admin` — local administration UI.
|
|
5
|
-
- `GET /admin/app.css` — same-origin stylesheet.
|
|
6
|
-
- `GET /admin/app.js` — same-origin script.
|
|
7
|
-
- `GET /admin/config` — runtime metadata plus raw provider API key for explicit reveal/copy.
|
|
8
|
-
|
|
9
|
-
## Security boundary
|
|
10
|
-
1. Every `/admin*` request is checked using `req.socket.remoteAddress` only; proxy and forwarded headers are ignored.
|
|
11
|
-
2. Accepted client addresses: IPv4 `127.0.0.0/8`, IPv6 `::1`, and IPv4-mapped loopback `::ffff:127.0.0.0/8`.
|
|
12
|
-
3. Host header must be literal `localhost`, `127.0.0.1`, or `[::1]`, optionally with the actual listening port. DNS names and non-loopback IPs fail closed.
|
|
13
|
-
4. No CORS headers are emitted. Config responses use `Cache-Control: no-store` and `X-Content-Type-Options: nosniff`.
|
|
14
|
-
5. API key is never embedded in static HTML/JS/CSS, logged, persisted by the GUI, or returned from `/health`.
|
|
15
|
-
6. CSP for `/admin` is `default-src 'self'; script-src 'self'; style-src 'self'; connect-src 'self'; img-src 'self' data:; base-uri 'none'; frame-ancestors 'none'; form-action 'none'`.
|
|
16
|
-
|
|
17
|
-
## GUI behavior
|
|
18
|
-
- Loads health and config from the same origin.
|
|
19
|
-
- Initially masks the API key.
|
|
20
|
-
- Reveal button only changes local DOM state after `/admin/config` succeeds.
|
|
21
|
-
- Copy buttons use Clipboard API for Base URL and API key.
|
|
22
|
-
- Shows model list, transport, workspace ID, health boundary, and OpenAI client configuration snippet.
|
|
23
|
-
|
|
24
|
-
## Tests
|
|
25
|
-
- Pure loopback and Host validation matrix.
|
|
26
|
-
- `/admin` succeeds on localhost and contains no API key.
|
|
27
|
-
- `/admin/config` returns metadata/key on loopback with no-store and no CORS.
|
|
28
|
-
- Non-loopback remoteAddress or attacker Host is rejected.
|
|
29
|
-
- Static assets never contain configured key.
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
# Aki Pro Max — Capability Matrix
|
|
2
|
-
|
|
3
|
-
## Current verified scope
|
|
4
|
-
|
|
5
|
-
| Requirement | Evidence | Verdict |
|
|
6
|
-
|---|---|---|
|
|
7
|
-
| OpenAI-compatible facade | `/v1/models`, `/v1/chat/completions`, authentication and model-contract tests | Met |
|
|
8
|
-
| Authorized Postman Web Team route | Fresh live probes used the configured team origin and workspace | Met for configured workspace |
|
|
9
|
-
| GPT-5.6 Sol native tool loop | Initial tool call, local result, same-session continuation, exact final marker | Met |
|
|
10
|
-
| Claude Opus 4.8 native tool loop | `CLAUDE-LIVE-TOOLS-EVIDENCE.json`: HTTP 200 initial and continuation, valid empty-object arguments, exact final marker | Met |
|
|
11
|
-
| 1:1 single-process session continuity | Correlation tests plus sticky `x-session-id` contract | Met |
|
|
12
|
-
| Eight public model aliases | Runtime catalog and deterministic checks | Met as catalog |
|
|
13
|
-
| AICoworker → 9router → Aki Pro Max attribution | `FULL-TRACE-EVIDENCE.json`: fresh `provider=pmn` subagent request correlated to usage row `86672` on `Aki Pro Max Local`; CPX remained active | Met |
|
|
14
|
-
| Local Control Plane | `/admin` UAT, masked status, API-key reveal and upstream-auth fields | Met |
|
|
15
|
-
| Automatic protected Desktop-session extraction | Not implemented; manual authorized session input remains required | Not supported |
|
|
16
|
-
| Multi-team live routing | Header validation exists; a live multi-team matrix has not been exercised | Partial |
|
|
17
|
-
| Restart/multi-worker correlation | Correlation store remains in-memory and single-process | Not supported |
|
|
18
|
-
|
|
19
|
-
## Closure evidence for issues #1 and #2
|
|
20
|
-
|
|
21
|
-
### Issue #1 — Claude live tool flow
|
|
22
|
-
|
|
23
|
-
The fresh acceptance run at `services/postman-openai-provider/reports/live-runs/goal-issue1-session-20260913-072211/LIVE-TWO-MODEL-TOOLS-EVIDENCE.json` recorded:
|
|
24
|
-
|
|
25
|
-
- `publicModel=claude-opus-4-8`
|
|
26
|
-
- `selectedModel=CLAUDE_OPUS_48_BEDROCK`
|
|
27
|
-
- initial HTTP `200`
|
|
28
|
-
- exactly one valid `get_probe_value` tool call
|
|
29
|
-
- `argumentsValid=true`
|
|
30
|
-
- continuation HTTP `200`
|
|
31
|
-
- `finalMatchesMarker=true`
|
|
32
|
-
- terminal state `completed_match`
|
|
33
|
-
|
|
34
|
-
### Issue #2 — PMN attribution with CPX still active
|
|
35
|
-
|
|
36
|
-
A fresh AICoworker subagent explicitly requested `pmn/PMN/gpt-5.6-sol` and its persisted transcript recorded `provider=pmn`, `model=PMN/gpt-5.6-sol`. In the matching time window, 9router usage row `86672` was served by connection `6706879a-9897-4b2a-9142-728ca64276d4`, mapped to `Aki Pro Max Local`, with status `ok` and four completion tokens—the exact marker response. CPX remained active and served surrounding unrelated requests, so the result is not a CPX-disabled negative test.
|
|
37
|
-
|
|
38
|
-
## Verification gate
|
|
39
|
-
|
|
40
|
-
Tier 1 syntax and focused integration tests passed. The Trio verifier scored closure evidence **17.43/20** with **StdDev 0.40**, above the required 14.0 threshold and below the 3.5 disagreement gate. See `VERIFIER-ISSUES12-FINAL.txt`.
|
|
41
|
-
|
|
42
|
-
## Honest remaining boundaries
|
|
43
|
-
|
|
44
|
-
This remains a beta release because automatic protected-session extraction, multi-team live coverage and restart-safe distributed correlation are not claimed. Those boundaries do not invalidate closure of issues #1 and #2.
|