aicortexpy 0.2.6__tar.gz → 0.2.8__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.
Files changed (99) hide show
  1. {aicortexpy-0.2.6/aicortexpy.egg-info → aicortexpy-0.2.8}/PKG-INFO +1 -1
  2. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy/__init__.py +1 -1
  3. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy/runtime_config.py +39 -10
  4. {aicortexpy-0.2.6 → aicortexpy-0.2.8/aicortexpy.egg-info}/PKG-INFO +1 -1
  5. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/pyproject.toml +1 -1
  6. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/MANIFEST.in +0 -0
  7. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/README.md +0 -0
  8. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortex/__init__.py +0 -0
  9. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortex/__main__.py +0 -0
  10. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy/__main__.py +0 -0
  11. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy/acp_client.py +0 -0
  12. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy/acp_conn.py +0 -0
  13. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy/acp_errors.py +0 -0
  14. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy/agent_env.py +0 -0
  15. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy/app_workdir.py +0 -0
  16. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy/artifact_ws.py +0 -0
  17. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy/artifacts.py +0 -0
  18. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy/attachments.py +0 -0
  19. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy/auto_commit.py +0 -0
  20. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy/capabilities.py +0 -0
  21. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy/chat_acp_pool.py +0 -0
  22. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy/cli.py +0 -0
  23. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy/cli_context.py +0 -0
  24. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy/client.py +0 -0
  25. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy/codex_config.py +0 -0
  26. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy/commands/__init__.py +0 -0
  27. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy/commands/agent_cmd.py +0 -0
  28. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy/commands/attachment_cmd.py +0 -0
  29. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy/commands/auth_cmd.py +0 -0
  30. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy/commands/autopilot_cmd.py +0 -0
  31. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy/commands/config_cmd.py +0 -0
  32. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy/commands/daemon_cmd.py +0 -0
  33. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy/commands/graph_cmd.py +0 -0
  34. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy/commands/issue_cmd.py +0 -0
  35. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy/commands/label_cmd.py +0 -0
  36. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy/commands/meeting_cmd.py +0 -0
  37. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy/commands/memory_cmd.py +0 -0
  38. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy/commands/project_cmd.py +0 -0
  39. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy/commands/repo_cmd.py +0 -0
  40. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy/commands/runtime_cmd.py +0 -0
  41. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy/commands/setup_cmd.py +0 -0
  42. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy/commands/skill_cmd.py +0 -0
  43. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy/commands/squad_cmd.py +0 -0
  44. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy/commands/update_cmd.py +0 -0
  45. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy/commands/version_cmd.py +0 -0
  46. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy/commands/workspace_cmd.py +0 -0
  47. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy/config.py +0 -0
  48. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy/daemon.py +0 -0
  49. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy/data/default_skills/agent-memory/SKILL.md +0 -0
  50. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy/data/default_skills/aicorkit-atlassian/SKILL.md +0 -0
  51. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy/data/default_skills/aicorkit-graph/SKILL.md +0 -0
  52. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy/data/default_skills/aicorkit-outlook/SKILL.md +0 -0
  53. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy/data/default_skills/aicorkit-wxmsg/SKILL.md +0 -0
  54. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy/data/default_skills/aicortex-basics/SKILL.md +0 -0
  55. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy/data/default_skills/aicortex-bridge-cdp/SKILL.md +0 -0
  56. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy/data/default_skills/aicortex-cli-ops/SKILL.md +0 -0
  57. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy/data/default_skills/aicortex-graph/SKILL.md +0 -0
  58. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy/data/default_skills/graphify/SKILL.md +0 -0
  59. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy/data/default_skills/question-form/SKILL.md +0 -0
  60. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy/data/default_skills/test-report-generator/SKILL.md +0 -0
  61. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy/data/default_skills/test-report-generator/scripts/generate_cases.py +0 -0
  62. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy/data/default_skills/test-report-generator/scripts/generate_report.py +0 -0
  63. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy/design_seed.py +0 -0
  64. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy/diskusage.py +0 -0
  65. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy/execenv.py +0 -0
  66. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy/gc.py +0 -0
  67. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy/handoff_bundle.py +0 -0
  68. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy/health.py +0 -0
  69. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy/id_resolve.py +0 -0
  70. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy/local_skills.py +0 -0
  71. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy/models.py +0 -0
  72. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy/oauth_login.py +0 -0
  73. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy/openclaw_config.py +0 -0
  74. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy/output.py +0 -0
  75. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy/permission.py +0 -0
  76. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy/pinned_workdir.py +0 -0
  77. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy/platform_client.py +0 -0
  78. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy/platform_info.py +0 -0
  79. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy/poisoned.py +0 -0
  80. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy/process.py +0 -0
  81. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy/procutil.py +0 -0
  82. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy/prompt.py +0 -0
  83. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy/repo.py +0 -0
  84. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy/runner.py +0 -0
  85. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy/sandbox.py +0 -0
  86. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy/security.py +0 -0
  87. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy/stream.py +0 -0
  88. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy/terminal.py +0 -0
  89. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy/tunnel.py +0 -0
  90. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy/wakeup.py +0 -0
  91. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy.egg-info/SOURCES.txt +0 -0
  92. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy.egg-info/dependency_links.txt +0 -0
  93. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy.egg-info/entry_points.txt +0 -0
  94. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy.egg-info/requires.txt +0 -0
  95. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/aicortexpy.egg-info/top_level.txt +0 -0
  96. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/scripts/aicortex +0 -0
  97. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/scripts/aicortex.cmd +0 -0
  98. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/setup.cfg +0 -0
  99. {aicortexpy-0.2.6 → aicortexpy-0.2.8}/tests/test_app_workdir.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: aicortexpy
3
- Version: 0.2.6
3
+ Version: 0.2.8
4
4
  Summary: AICortex Python CLI and local agent runtime daemon (Go CLI compatible)
5
5
  Author: AICortex
6
6
  License: Apache-2.0
@@ -1,3 +1,3 @@
1
1
  """AICortex Python CLI + local agent runtime daemon."""
2
2
 
3
- __version__ = "0.2.6"
3
+ __version__ = "0.2.8"
@@ -43,6 +43,7 @@ class TaskContextForEnv:
43
43
  project_title: str = ""
44
44
  project_prompt: str = ""
45
45
  project_resources: list[dict[str, Any]] = field(default_factory=list)
46
+ project_workdir: str = ""
46
47
  repos: list[dict[str, Any]] = field(default_factory=list)
47
48
  is_squad_leader: bool = False
48
49
  memory_markdown: str = ""
@@ -101,6 +102,9 @@ def task_context_from_task(task: Any) -> TaskContextForEnv:
101
102
 
102
103
 
103
104
  def inject_runtime_config(work_dir: Path, provider: str, ctx: TaskContextForEnv) -> str:
105
+ # Prefer telling agents the real cwd over the /workspace/{id}/ alias.
106
+ if ctx.project_id and not ctx.project_workdir.strip() and str(work_dir).strip():
107
+ ctx.project_workdir = str(work_dir)
104
108
  content = build_meta_skill_content(provider, ctx)
105
109
  target: Path | None
106
110
  if provider == "claude":
@@ -281,11 +285,40 @@ def _format_project_resource(r: dict[str, Any]) -> str:
281
285
  return out
282
286
 
283
287
 
284
- def _project_has_local_path(ctx: TaskContextForEnv) -> bool:
288
+ def _project_local_path(ctx: TaskContextForEnv) -> str:
289
+ """Resolved local_path for this claim (by_daemon already narrowed)."""
285
290
  for r in ctx.project_resources:
286
- if str(r.get("resource_type") or r.get("type") or "") == "local_path":
287
- return True
288
- return False
291
+ if str(r.get("resource_type") or r.get("type") or "") != "local_path":
292
+ continue
293
+ ref = r.get("resource_ref") or r.get("ref") or {}
294
+ if isinstance(ref, str):
295
+ try:
296
+ ref = json.loads(ref)
297
+ except json.JSONDecodeError:
298
+ ref = {}
299
+ if not isinstance(ref, dict):
300
+ continue
301
+ path = str(ref.get("path") or "").strip()
302
+ if path:
303
+ return path
304
+ return ""
305
+
306
+
307
+ def _project_has_local_path(ctx: TaskContextForEnv) -> bool:
308
+ return bool(_project_local_path(ctx))
309
+
310
+
311
+ def _project_workdir_line(ctx: TaskContextForEnv) -> str:
312
+ """Prefer resolved local_path, then real process cwd, then logical alias."""
313
+ path = _project_local_path(ctx)
314
+ if path:
315
+ return f"Project working directory: `{path}`\n\n"
316
+ workdir = (ctx.project_workdir or "").strip()
317
+ if workdir:
318
+ return f"Project working directory: `{workdir}`\n\n"
319
+ if ctx.project_id:
320
+ return f"Project working directory (logical): `/workspace/{ctx.project_id}/`\n\n"
321
+ return ""
289
322
 
290
323
 
291
324
  def _has_project_context(ctx: TaskContextForEnv) -> bool:
@@ -321,8 +354,7 @@ def _project_context_section(ctx: TaskContextForEnv) -> str:
321
354
  parts = ["## Project Context\n\n"]
322
355
  if ctx.project_title:
323
356
  parts.append(f"This {scope} belongs to **{ctx.project_title}**.\n\n")
324
- if ctx.project_id:
325
- parts.append(f"Project working directory (logical): `/workspace/{ctx.project_id}/`\n\n")
357
+ parts.append(_project_workdir_line(ctx))
326
358
  if ctx.project_resources:
327
359
  parts.append("Project resources (also at `.aicortex/project/resources.json`):\n\n")
328
360
  for r in ctx.project_resources:
@@ -564,10 +596,7 @@ def _design_studio_runtime(provider: str, ctx: TaskContextForEnv) -> str:
564
596
  parts.append("## Design project context\n\n")
565
597
  if ctx.project_title:
566
598
  parts.append(f"This design session belongs to **{ctx.project_title}**.\n\n")
567
- if ctx.project_id:
568
- parts.append(
569
- f"Project working directory (logical): `/workspace/{ctx.project_id}/`\n\n"
570
- )
599
+ parts.append(_project_workdir_line(ctx))
571
600
  if ctx.project_resources:
572
601
  parts.append("Project resources (tokens/branding only):\n\n")
573
602
  for r in ctx.project_resources:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: aicortexpy
3
- Version: 0.2.6
3
+ Version: 0.2.8
4
4
  Summary: AICortex Python CLI and local agent runtime daemon (Go CLI compatible)
5
5
  Author: AICortex
6
6
  License: Apache-2.0
@@ -5,7 +5,7 @@ build-backend = "setuptools.build_meta"
5
5
  [project]
6
6
  # PyPI + import + console script entry for full Go CLI replacement.
7
7
  name = "aicortexpy"
8
- version = "0.2.6"
8
+ version = "0.2.8"
9
9
  description = "AICortex Python CLI and local agent runtime daemon (Go CLI compatible)"
10
10
  readme = "README.md"
11
11
  license = { text = "Apache-2.0" }
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes