akernel-runtime 0.1.6__tar.gz → 0.1.7__tar.gz
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.
- akernel_runtime-0.1.7/.github/release-notes/v0.1.7.md +32 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/CHANGELOG.md +10 -0
- {akernel_runtime-0.1.6/src/akernel_runtime.egg-info → akernel_runtime-0.1.7}/PKG-INFO +2 -1
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/packages/npm/akernel/package.json +1 -1
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/pyproject.toml +2 -2
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7/src/akernel_runtime.egg-info}/PKG-INFO +2 -1
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/src/akernel_runtime.egg-info/SOURCES.txt +1 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/src/akernel_runtime.egg-info/requires.txt +1 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/src/context_kernel/__init__.py +1 -1
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/src/context_kernel/cli.py +69 -18
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/tests/test_runtime.py +14 -1
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/.env.example +0 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/.github/pull_request_template.md +0 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/.github/release-notes/v0.1.0.md +0 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/.github/release-notes/v0.1.1.md +0 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/.github/release-notes/v0.1.2.md +0 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/.github/release-notes/v0.1.3.md +0 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/.github/release-notes/v0.1.4.md +0 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/.github/release-notes/v0.1.5.md +0 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/.github/release-notes/v0.1.6.md +0 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/.github/workflows/ci.yml +0 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/.github/workflows/release.yml +0 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/CODE_OF_CONDUCT.md +0 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/CONTRIBUTING.md +0 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/LICENSE +0 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/MANIFEST.in +0 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/NOTICE +0 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/README.md +0 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/SECURITY.md +0 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/docs/00-vision.md +0 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/docs/01-architecture.md +0 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/docs/02-execution-plan.md +0 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/docs/03-cli-mvp.md +0 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/docs/04-evaluation.md +0 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/docs/05-local-wake.md +0 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/docs/06-skill-compiler.md +0 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/docs/07-release-and-ci.md +0 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/docs/08-open-source-plan.md +0 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/docs/09-product-roadmap.md +0 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/docs/10-benchmark-evidence.md +0 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/docs/11-publishing-setup.md +0 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/examples/benchmarks/phase2/01-routing.json +0 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/examples/benchmarks/phase2/02-memory.json +0 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/examples/benchmarks/phase2/03-budget-profiles.json +0 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/examples/benchmarks/scale/01-context-pressure.json +0 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/examples/benchmarks/scale/02-agent-editing.json +0 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/examples/benchmarks/scale/03-global-memory-marketplace.json +0 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/examples/evals/phase2.json +0 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/examples/marketplace/skills/index.json +0 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/examples/skills/context_budget.json +0 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/examples/skills/edit_file.json +0 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/examples/skills/markdown/context_budget.md +0 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/packages/npm/akernel/README.md +0 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/packages/npm/akernel/bin/akernel.js +0 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/scripts/install_remote.ps1 +0 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/scripts/release_check.ps1 +0 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/setup.cfg +0 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/setup.cmd +0 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/setup.ps1 +0 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/src/akernel_runtime.egg-info/dependency_links.txt +0 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/src/akernel_runtime.egg-info/entry_points.txt +0 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/src/akernel_runtime.egg-info/top_level.txt +0 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/src/context_kernel/__main__.py +0 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/src/context_kernel/agent_reports.py +0 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/src/context_kernel/benchmarks.py +0 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/src/context_kernel/budget.py +0 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/src/context_kernel/context.py +0 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/src/context_kernel/evals.py +0 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/src/context_kernel/global_memory.py +0 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/src/context_kernel/loop.py +0 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/src/context_kernel/marketplace.py +0 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/src/context_kernel/marketplace_data/skills/context_budget.json +0 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/src/context_kernel/marketplace_data/skills/context_compaction.json +0 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/src/context_kernel/marketplace_data/skills/edit_file.json +0 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/src/context_kernel/marketplace_data/skills/index.json +0 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/src/context_kernel/marketplace_data/skills/long_task_planning.json +0 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/src/context_kernel/marketplace_data/skills/multi_file_bugfix.json +0 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/src/context_kernel/memory.py +0 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/src/context_kernel/models.py +0 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/src/context_kernel/planner.py +0 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/src/context_kernel/policy.py +0 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/src/context_kernel/project.py +0 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/src/context_kernel/providers.py +0 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/src/context_kernel/report_costs.py +0 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/src/context_kernel/runner.py +0 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/src/context_kernel/skills.py +0 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/src/context_kernel/state_writer.py +0 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/src/context_kernel/storage.py +0 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/src/context_kernel/tasks.py +0 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/src/context_kernel/text.py +0 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/src/context_kernel/tokenizer.py +0 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/src/context_kernel/tools.py +0 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/src/context_kernel/verifier.py +0 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/wake.cmd +0 -0
- {akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/wake.ps1 +0 -0
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# Context Kernel v0.1.7
|
|
2
|
+
|
|
3
|
+
This release adds real-time interactive completions to `akernel`.
|
|
4
|
+
|
|
5
|
+
## Install
|
|
6
|
+
|
|
7
|
+
Python:
|
|
8
|
+
|
|
9
|
+
```powershell
|
|
10
|
+
python -m pip install --user --upgrade akernel-runtime
|
|
11
|
+
akernel setup
|
|
12
|
+
akernel
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
npm launcher:
|
|
16
|
+
|
|
17
|
+
```powershell
|
|
18
|
+
npm install -g @context-akernel/akernel
|
|
19
|
+
akernel setup
|
|
20
|
+
akernel
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Highlights
|
|
24
|
+
|
|
25
|
+
- Typing `/` now opens command completions such as `/help`, `/status`, `/model`, and `/cost`.
|
|
26
|
+
- Typing `@` now opens workspace file completions for attaching files.
|
|
27
|
+
- Non-interactive shells and scripts still fall back to standard `input()` behavior.
|
|
28
|
+
|
|
29
|
+
## Verification
|
|
30
|
+
|
|
31
|
+
- Added completion unit coverage for slash commands and `@` file candidates.
|
|
32
|
+
- Ran the full Python test suite.
|
|
@@ -8,6 +8,16 @@ The project follows a pragmatic pre-1.0 changelog: breaking changes may occur, b
|
|
|
8
8
|
|
|
9
9
|
No changes yet.
|
|
10
10
|
|
|
11
|
+
## 0.1.7 - 2026-05-14
|
|
12
|
+
|
|
13
|
+
### Added
|
|
14
|
+
|
|
15
|
+
- Added real-time chat input completions for slash commands and `@` workspace file search.
|
|
16
|
+
|
|
17
|
+
### Changed
|
|
18
|
+
|
|
19
|
+
- Added `prompt_toolkit` as the interactive input dependency, with automatic fallback to native `input()` in non-interactive terminals.
|
|
20
|
+
|
|
11
21
|
## 0.1.6 - 2026-05-14
|
|
12
22
|
|
|
13
23
|
### Added
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: akernel-runtime
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.7
|
|
4
4
|
Summary: Agent Kernel: a CLI-first context-native agent runtime prototype.
|
|
5
5
|
Author: Context Kernel contributors
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -20,6 +20,7 @@ Requires-Python: >=3.10
|
|
|
20
20
|
Description-Content-Type: text/markdown
|
|
21
21
|
License-File: LICENSE
|
|
22
22
|
License-File: NOTICE
|
|
23
|
+
Requires-Dist: prompt_toolkit>=3.0.43
|
|
23
24
|
Provides-Extra: dev
|
|
24
25
|
Requires-Dist: build>=1.2; extra == "dev"
|
|
25
26
|
Requires-Dist: twine>=5.0; extra == "dev"
|
|
@@ -4,13 +4,13 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "akernel-runtime"
|
|
7
|
-
version = "0.1.
|
|
7
|
+
version = "0.1.7"
|
|
8
8
|
description = "Agent Kernel: a CLI-first context-native agent runtime prototype."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = "Apache-2.0"
|
|
11
11
|
license-files = ["LICENSE", "NOTICE"]
|
|
12
12
|
requires-python = ">=3.10"
|
|
13
|
-
dependencies = []
|
|
13
|
+
dependencies = ["prompt_toolkit>=3.0.43"]
|
|
14
14
|
keywords = ["agent", "cli", "context", "llm", "token-budget"]
|
|
15
15
|
authors = [
|
|
16
16
|
{ name = "Context Kernel contributors" },
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: akernel-runtime
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.7
|
|
4
4
|
Summary: Agent Kernel: a CLI-first context-native agent runtime prototype.
|
|
5
5
|
Author: Context Kernel contributors
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -20,6 +20,7 @@ Requires-Python: >=3.10
|
|
|
20
20
|
Description-Content-Type: text/markdown
|
|
21
21
|
License-File: LICENSE
|
|
22
22
|
License-File: NOTICE
|
|
23
|
+
Requires-Dist: prompt_toolkit>=3.0.43
|
|
23
24
|
Provides-Extra: dev
|
|
24
25
|
Requires-Dist: build>=1.2; extra == "dev"
|
|
25
26
|
Requires-Dist: twine>=5.0; extra == "dev"
|
|
@@ -43,6 +43,22 @@ from .verifier import verify_trace
|
|
|
43
43
|
|
|
44
44
|
DEFAULT_PRIMARY_MODEL = "gpt-5.5"
|
|
45
45
|
DEFAULT_AUXILIARY_MODEL = "gpt-5.3-codex"
|
|
46
|
+
CHAT_COMMANDS: list[tuple[str, str]] = [
|
|
47
|
+
("/help", "show command palette"),
|
|
48
|
+
("/status", "show workspace and runtime status"),
|
|
49
|
+
("/model", "show primary and auxiliary model roles"),
|
|
50
|
+
("/config", "show setup and environment guidance"),
|
|
51
|
+
("/compact", "show compact task brief"),
|
|
52
|
+
("/paste", "enter a multi-line task"),
|
|
53
|
+
("/task", "print current task session JSON"),
|
|
54
|
+
("/runs", "list recent agent runs"),
|
|
55
|
+
("/cost", "print last run cost report"),
|
|
56
|
+
("/up", "show older transcript lines"),
|
|
57
|
+
("/down", "move back toward latest messages"),
|
|
58
|
+
("/latest", "jump to latest messages"),
|
|
59
|
+
("/clear", "clear transcript"),
|
|
60
|
+
("/exit", "leave interactive session"),
|
|
61
|
+
]
|
|
46
62
|
OPENAI_ENV_KEYS = {
|
|
47
63
|
"api_key": "AKERNEL_OPENAI_API_KEY",
|
|
48
64
|
"base_url": "AKERNEL_OPENAI_BASE_URL",
|
|
@@ -1075,7 +1091,7 @@ def cmd_chat(args: argparse.Namespace) -> None:
|
|
|
1075
1091
|
print_chat_header(workspace, task_id, args)
|
|
1076
1092
|
while True:
|
|
1077
1093
|
try:
|
|
1078
|
-
request =
|
|
1094
|
+
request = read_chat_input(chat_prompt(args), workspace).strip()
|
|
1079
1095
|
except EOFError:
|
|
1080
1096
|
print("")
|
|
1081
1097
|
break
|
|
@@ -1236,7 +1252,7 @@ def run_chat_loop_tui(
|
|
|
1236
1252
|
render_chat_tui_screen(workspace, task_id, args, transcript, last_report, pending_context, status="ready", state=state, clear=use_alt_screen)
|
|
1237
1253
|
while True:
|
|
1238
1254
|
try:
|
|
1239
|
-
request =
|
|
1255
|
+
request = read_chat_input(tui_prompt(args), workspace).strip()
|
|
1240
1256
|
except EOFError:
|
|
1241
1257
|
break
|
|
1242
1258
|
except KeyboardInterrupt:
|
|
@@ -1392,27 +1408,62 @@ def capture_chat_output(func: Any) -> str:
|
|
|
1392
1408
|
|
|
1393
1409
|
def format_chat_help_text() -> str:
|
|
1394
1410
|
rows = [
|
|
1395
|
-
|
|
1396
|
-
("/status", "show workspace and runtime status"),
|
|
1397
|
-
("/model", "show primary and auxiliary model roles"),
|
|
1398
|
-
("/config", "show setup and environment guidance"),
|
|
1399
|
-
("/compact", "show the compact task brief used for resume context"),
|
|
1400
|
-
("/paste", "enter a multi-line task; finish with /end"),
|
|
1401
|
-
("@path", "attach a workspace file to the next task"),
|
|
1402
|
-
("!command", "run a policy-checked command and attach its summary"),
|
|
1403
|
-
("/task", "print the current task session JSON"),
|
|
1404
|
-
("/runs", "list recent agent runs"),
|
|
1405
|
-
("/cost", "print the last agent run cost report"),
|
|
1406
|
-
("/up", "show older transcript lines in the viewport"),
|
|
1407
|
-
("/down", "move the viewport back toward latest messages"),
|
|
1408
|
-
("/latest", "jump to the newest transcript lines"),
|
|
1409
|
-
("/clear", "clear the transcript"),
|
|
1410
|
-
("/exit", "leave the interactive session"),
|
|
1411
|
+
*CHAT_COMMANDS,
|
|
1411
1412
|
("@query", "search current workspace files; use @1, @2... to attach a listed match"),
|
|
1413
|
+
("!command", "run a policy-checked command and attach its summary"),
|
|
1412
1414
|
]
|
|
1413
1415
|
return "\n".join(f"{name:<10} {description}" for name, description in rows)
|
|
1414
1416
|
|
|
1415
1417
|
|
|
1418
|
+
def read_chat_input(prompt: str, workspace: Workspace) -> str:
|
|
1419
|
+
if not should_use_prompt_toolkit():
|
|
1420
|
+
return input(prompt)
|
|
1421
|
+
try:
|
|
1422
|
+
from prompt_toolkit import PromptSession
|
|
1423
|
+
from prompt_toolkit.completion import Completer, Completion
|
|
1424
|
+
from prompt_toolkit.formatted_text import ANSI
|
|
1425
|
+
from prompt_toolkit.shortcuts import CompleteStyle
|
|
1426
|
+
except ImportError:
|
|
1427
|
+
return input(prompt)
|
|
1428
|
+
|
|
1429
|
+
class ChatCompleter(Completer):
|
|
1430
|
+
def get_completions(self, document: Any, complete_event: Any) -> Any:
|
|
1431
|
+
text = document.text_before_cursor
|
|
1432
|
+
for value, description in chat_completion_items(workspace.root, text):
|
|
1433
|
+
yield Completion(value, start_position=-len(text), display=value, display_meta=description)
|
|
1434
|
+
|
|
1435
|
+
session = PromptSession(
|
|
1436
|
+
completer=ChatCompleter(),
|
|
1437
|
+
complete_while_typing=True,
|
|
1438
|
+
complete_in_thread=True,
|
|
1439
|
+
complete_style=CompleteStyle.MULTI_COLUMN,
|
|
1440
|
+
reserve_space_for_menu=6,
|
|
1441
|
+
)
|
|
1442
|
+
return session.prompt(ANSI(prompt))
|
|
1443
|
+
|
|
1444
|
+
|
|
1445
|
+
def should_use_prompt_toolkit() -> bool:
|
|
1446
|
+
if os.environ.get("AKERNEL_NO_COMPLETION"):
|
|
1447
|
+
return False
|
|
1448
|
+
return bool(sys.stdin.isatty() and sys.stdout.isatty())
|
|
1449
|
+
|
|
1450
|
+
|
|
1451
|
+
def chat_completion_items(root: Path, text: str, *, limit: int = 12) -> list[tuple[str, str]]:
|
|
1452
|
+
value = text.strip()
|
|
1453
|
+
if value.startswith("/"):
|
|
1454
|
+
query = value.casefold()
|
|
1455
|
+
return [
|
|
1456
|
+
(command, description)
|
|
1457
|
+
for command, description in CHAT_COMMANDS
|
|
1458
|
+
if command.casefold().startswith(query)
|
|
1459
|
+
][:limit]
|
|
1460
|
+
if value.startswith("@"):
|
|
1461
|
+
query = value[1:].strip()
|
|
1462
|
+
matches = find_workspace_files(root, query, limit=limit)
|
|
1463
|
+
return [(f"@{path}", "attach file") for path in matches]
|
|
1464
|
+
return []
|
|
1465
|
+
|
|
1466
|
+
|
|
1416
1467
|
def tui_prompt(args: argparse.Namespace) -> str:
|
|
1417
1468
|
return chat_color("\nakernel", "cyan", bold=True) + chat_color(f" [{primary_model(args)}]", "dim") + "> "
|
|
1418
1469
|
|
|
@@ -10,7 +10,7 @@ from unittest.mock import patch
|
|
|
10
10
|
from context_kernel.agent_reports import build_agent_cost_report, render_agent_cost_report
|
|
11
11
|
from context_kernel.benchmarks import BenchmarkRunner, render_benchmark_evidence_markdown, render_benchmark_markdown
|
|
12
12
|
from context_kernel.budget import allocate_budget
|
|
13
|
-
from context_kernel.cli import build_chat_tui_screen, load_batch_patch_specs, main, print_agent_report
|
|
13
|
+
from context_kernel.cli import build_chat_tui_screen, chat_completion_items, load_batch_patch_specs, main, print_agent_report
|
|
14
14
|
from context_kernel.context import ContextBuilder
|
|
15
15
|
from context_kernel.evals import EvalRunner
|
|
16
16
|
from context_kernel.global_memory import pull_global_memories, push_global_memories
|
|
@@ -1417,6 +1417,19 @@ class RuntimeTests(unittest.TestCase):
|
|
|
1417
1417
|
self.assertIn("Attached File", output)
|
|
1418
1418
|
self.assertIn("Mock agent response", output)
|
|
1419
1419
|
|
|
1420
|
+
def test_chat_completion_items_include_commands_and_files(self) -> None:
|
|
1421
|
+
with tempfile.TemporaryDirectory() as tmp:
|
|
1422
|
+
root = Path(tmp)
|
|
1423
|
+
(root / "README.md").write_text("demo", encoding="utf-8")
|
|
1424
|
+
(root / "src").mkdir()
|
|
1425
|
+
(root / "src" / "runtime.py").write_text("print('ok')", encoding="utf-8")
|
|
1426
|
+
|
|
1427
|
+
command_items = chat_completion_items(root, "/mo")
|
|
1428
|
+
file_items = chat_completion_items(root, "@run")
|
|
1429
|
+
|
|
1430
|
+
self.assertIn(("/model", "show primary and auxiliary model roles"), command_items)
|
|
1431
|
+
self.assertIn(("@src/runtime.py", "attach file"), file_items)
|
|
1432
|
+
|
|
1420
1433
|
def test_tui_screen_surfaces_task_plan_and_command_strip(self) -> None:
|
|
1421
1434
|
with tempfile.TemporaryDirectory() as tmp:
|
|
1422
1435
|
workspace = Workspace(Path(tmp))
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/examples/benchmarks/phase2/03-budget-profiles.json
RENAMED
|
File without changes
|
{akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/examples/benchmarks/scale/01-context-pressure.json
RENAMED
|
File without changes
|
{akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/examples/benchmarks/scale/02-agent-editing.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/src/akernel_runtime.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{akernel_runtime-0.1.6 → akernel_runtime-0.1.7}/src/akernel_runtime.egg-info/entry_points.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|