task-agent 1.3.0__tar.gz → 1.3.1__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 (148) hide show
  1. {task_agent-1.3.0 → task_agent-1.3.1}/PKG-INFO +1 -1
  2. {task_agent-1.3.0 → task_agent-1.3.1}/pyproject.toml +1 -1
  3. {task_agent-1.3.0 → task_agent-1.3.1}/src/taskagent/chat/last_used.py +39 -39
  4. {task_agent-1.3.0 → task_agent-1.3.1}/src/taskagent/cli.py +0 -2
  5. {task_agent-1.3.0 → task_agent-1.3.1}/uv.lock +1 -1
  6. {task_agent-1.3.0 → task_agent-1.3.1}/.agents/skills/next/SKILL.md +0 -0
  7. {task_agent-1.3.0 → task_agent-1.3.1}/.env +0 -0
  8. {task_agent-1.3.0 → task_agent-1.3.1}/.gemini/settings.json +0 -0
  9. {task_agent-1.3.0 → task_agent-1.3.1}/.github/workflows/ci.yml +0 -0
  10. {task_agent-1.3.0 → task_agent-1.3.1}/.github/workflows/publish.yml +0 -0
  11. {task_agent-1.3.0 → task_agent-1.3.1}/.gitignore +0 -0
  12. {task_agent-1.3.0 → task_agent-1.3.1}/.mise.toml +0 -0
  13. {task_agent-1.3.0 → task_agent-1.3.1}/.pre-commit-config.yaml +0 -0
  14. {task_agent-1.3.0 → task_agent-1.3.1}/.python-version +0 -0
  15. {task_agent-1.3.0 → task_agent-1.3.1}/.ta/agents/agy-cli/meta.toml +0 -0
  16. {task_agent-1.3.0 → task_agent-1.3.1}/.ta/agents/antigravity/meta.toml +0 -0
  17. {task_agent-1.3.0 → task_agent-1.3.1}/.ta/agents/gh/meta.toml +0 -0
  18. {task_agent-1.3.0 → task_agent-1.3.1}/.ta/agents/minimal/meta.toml +0 -0
  19. {task_agent-1.3.0 → task_agent-1.3.1}/.ta/agents/uat-aws/meta.toml +0 -0
  20. {task_agent-1.3.0 → task_agent-1.3.1}/.ta/worker +0 -0
  21. {task_agent-1.3.0 → task_agent-1.3.1}/.ta-config.json +0 -0
  22. {task_agent-1.3.0 → task_agent-1.3.1}/CLAUDE.md +0 -0
  23. {task_agent-1.3.0 → task_agent-1.3.1}/GEMINI.md +0 -0
  24. {task_agent-1.3.0 → task_agent-1.3.1}/Makefile +0 -0
  25. {task_agent-1.3.0 → task_agent-1.3.1}/README.md +0 -0
  26. {task_agent-1.3.0 → task_agent-1.3.1}/agent.env +0 -0
  27. {task_agent-1.3.0 → task_agent-1.3.1}/docs/README.md +0 -0
  28. {task_agent-1.3.0 → task_agent-1.3.1}/docs/STATION-MAP.md +0 -0
  29. {task_agent-1.3.0 → task_agent-1.3.1}/docs/architecture/README.md +0 -0
  30. {task_agent-1.3.0 → task_agent-1.3.1}/docs/chats/gemini-conversation-1773283034591.json +0 -0
  31. {task_agent-1.3.0 → task_agent-1.3.1}/docs/chats/project-init-to-v0.1.46.md +0 -0
  32. {task_agent-1.3.0 → task_agent-1.3.1}/docs/cli/README.md +0 -0
  33. {task_agent-1.3.0 → task_agent-1.3.1}/docs/development/README.md +0 -0
  34. {task_agent-1.3.0 → task_agent-1.3.1}/docs/task-agents.md +0 -0
  35. {task_agent-1.3.0 → task_agent-1.3.1}/docs/workflow/README.md +0 -0
  36. {task_agent-1.3.0 → task_agent-1.3.1}/docs/workflow/trivial_worker_policy.md +0 -0
  37. {task_agent-1.3.0 → task_agent-1.3.1}/opencode.json +0 -0
  38. {task_agent-1.3.0 → task_agent-1.3.1}/plugins/antigravity/.gemini-plugin/plugin.json +0 -0
  39. {task_agent-1.3.0 → task_agent-1.3.1}/plugins/antigravity/.mcp.json +0 -0
  40. {task_agent-1.3.0 → task_agent-1.3.1}/plugins/antigravity/README.md +0 -0
  41. {task_agent-1.3.0 → task_agent-1.3.1}/plugins/antigravity/hooks/hooks.json +0 -0
  42. {task_agent-1.3.0 → task_agent-1.3.1}/plugins/antigravity/hooks/session_start.sh +0 -0
  43. {task_agent-1.3.0 → task_agent-1.3.1}/plugins/antigravity/rules/task_agent.md +0 -0
  44. {task_agent-1.3.0 → task_agent-1.3.1}/plugins/antigravity/scripts/statusline.sh +0 -0
  45. {task_agent-1.3.0 → task_agent-1.3.1}/plugins/antigravity/skills/README.md +0 -0
  46. {task_agent-1.3.0 → task_agent-1.3.1}/plugins/antigravity/skills/agent-import/SKILL.md +0 -0
  47. {task_agent-1.3.0 → task_agent-1.3.1}/plugins/antigravity/skills/complete-task/SKILL.md +0 -0
  48. {task_agent-1.3.0 → task_agent-1.3.1}/plugins/antigravity/skills/mission-workflow/SKILL.md +0 -0
  49. {task_agent-1.3.0 → task_agent-1.3.1}/plugins/antigravity/skills/next/SKILL.md +0 -0
  50. {task_agent-1.3.0 → task_agent-1.3.1}/plugins/antigravity/skills/next-task/SKILL.md +0 -0
  51. {task_agent-1.3.0 → task_agent-1.3.1}/plugins/claude-code/.claude-plugin/plugin.json +0 -0
  52. {task_agent-1.3.0 → task_agent-1.3.1}/plugins/claude-code/.mcp.json +0 -0
  53. {task_agent-1.3.0 → task_agent-1.3.1}/plugins/claude-code/README.md +0 -0
  54. {task_agent-1.3.0 → task_agent-1.3.1}/plugins/claude-code/hooks/hooks.json +0 -0
  55. {task_agent-1.3.0 → task_agent-1.3.1}/plugins/claude-code/hooks/session_start.sh +0 -0
  56. {task_agent-1.3.0 → task_agent-1.3.1}/plugins/claude-code/scripts/statusline.sh +0 -0
  57. {task_agent-1.3.0 → task_agent-1.3.1}/plugins/claude-code/skills/agent-import/SKILL.md +0 -0
  58. {task_agent-1.3.0 → task_agent-1.3.1}/plugins/claude-code/skills/complete-task/SKILL.md +0 -0
  59. {task_agent-1.3.0 → task_agent-1.3.1}/plugins/claude-code/skills/mission-workflow/SKILL.md +0 -0
  60. {task_agent-1.3.0 → task_agent-1.3.1}/plugins/claude-code/skills/next-task/SKILL.md +0 -0
  61. {task_agent-1.3.0 → task_agent-1.3.1}/plugins/codex/.mcp.json +0 -0
  62. {task_agent-1.3.0 → task_agent-1.3.1}/plugins/codex/README.md +0 -0
  63. {task_agent-1.3.0 → task_agent-1.3.1}/plugins/copilot/.mcp.json +0 -0
  64. {task_agent-1.3.0 → task_agent-1.3.1}/plugins/copilot/README.md +0 -0
  65. {task_agent-1.3.0 → task_agent-1.3.1}/plugins/grok/.mcp.json +0 -0
  66. {task_agent-1.3.0 → task_agent-1.3.1}/plugins/grok/README.md +0 -0
  67. {task_agent-1.3.0 → task_agent-1.3.1}/scripts/clean_duplicates.py +0 -0
  68. {task_agent-1.3.0 → task_agent-1.3.1}/scripts/migrate_tasks.py +0 -0
  69. {task_agent-1.3.0 → task_agent-1.3.1}/scripts/recover_dates.py +0 -0
  70. {task_agent-1.3.0 → task_agent-1.3.1}/sidecars/adk-worker/.env.example +0 -0
  71. {task_agent-1.3.0 → task_agent-1.3.1}/sidecars/adk-worker/README.md +0 -0
  72. {task_agent-1.3.0 → task_agent-1.3.1}/sidecars/adk-worker/instructions/manager.md +0 -0
  73. {task_agent-1.3.0 → task_agent-1.3.1}/sidecars/adk-worker/instructions/validator.md +0 -0
  74. {task_agent-1.3.0 → task_agent-1.3.1}/sidecars/adk-worker/instructions/worker.md +0 -0
  75. {task_agent-1.3.0 → task_agent-1.3.1}/sidecars/adk-worker/profiles/default.json +0 -0
  76. {task_agent-1.3.0 → task_agent-1.3.1}/sidecars/adk-worker/pyproject.toml +0 -0
  77. {task_agent-1.3.0 → task_agent-1.3.1}/sidecars/adk-worker/uv.lock +0 -0
  78. {task_agent-1.3.0 → task_agent-1.3.1}/sidecars/adk-worker/worker.py +0 -0
  79. {task_agent-1.3.0 → task_agent-1.3.1}/skills/README.md +0 -0
  80. {task_agent-1.3.0 → task_agent-1.3.1}/skills/agent-import/SKILL.md +0 -0
  81. {task_agent-1.3.0 → task_agent-1.3.1}/skills/complete-task/SKILL.md +0 -0
  82. {task_agent-1.3.0 → task_agent-1.3.1}/skills/mission-workflow/SKILL.md +0 -0
  83. {task_agent-1.3.0 → task_agent-1.3.1}/skills/next/SKILL.md +0 -0
  84. {task_agent-1.3.0 → task_agent-1.3.1}/skills/next-task/SKILL.md +0 -0
  85. {task_agent-1.3.0 → task_agent-1.3.1}/src/taskagent/__init__.py +0 -0
  86. {task_agent-1.3.0 → task_agent-1.3.1}/src/taskagent/__main__.py +0 -0
  87. {task_agent-1.3.0 → task_agent-1.3.1}/src/taskagent/agent.py +0 -0
  88. {task_agent-1.3.0 → task_agent-1.3.1}/src/taskagent/agent_registry.py +0 -0
  89. {task_agent-1.3.0 → task_agent-1.3.1}/src/taskagent/audit.py +0 -0
  90. {task_agent-1.3.0 → task_agent-1.3.1}/src/taskagent/chat/__init__.py +0 -0
  91. {task_agent-1.3.0 → task_agent-1.3.1}/src/taskagent/chat/config.py +0 -0
  92. {task_agent-1.3.0 → task_agent-1.3.1}/src/taskagent/chat/discovery.py +0 -0
  93. {task_agent-1.3.0 → task_agent-1.3.1}/src/taskagent/config.py +0 -0
  94. {task_agent-1.3.0 → task_agent-1.3.1}/src/taskagent/discovery.py +0 -0
  95. {task_agent-1.3.0 → task_agent-1.3.1}/src/taskagent/importers/__init__.py +0 -0
  96. {task_agent-1.3.0 → task_agent-1.3.1}/src/taskagent/importers/antigravity.py +0 -0
  97. {task_agent-1.3.0 → task_agent-1.3.1}/src/taskagent/importers/base.py +0 -0
  98. {task_agent-1.3.0 → task_agent-1.3.1}/src/taskagent/importers/claude_code.py +0 -0
  99. {task_agent-1.3.0 → task_agent-1.3.1}/src/taskagent/importers/generic.py +0 -0
  100. {task_agent-1.3.0 → task_agent-1.3.1}/src/taskagent/inbox.py +0 -0
  101. {task_agent-1.3.0 → task_agent-1.3.1}/src/taskagent/manager.py +0 -0
  102. {task_agent-1.3.0 → task_agent-1.3.1}/src/taskagent/mcp.py +0 -0
  103. {task_agent-1.3.0 → task_agent-1.3.1}/src/taskagent/models/__init__.py +0 -0
  104. {task_agent-1.3.0 → task_agent-1.3.1}/src/taskagent/models/issue.py +0 -0
  105. {task_agent-1.3.0 → task_agent-1.3.1}/src/taskagent/models/metric.py +0 -0
  106. {task_agent-1.3.0 → task_agent-1.3.1}/src/taskagent/perf.py +0 -0
  107. {task_agent-1.3.0 → task_agent-1.3.1}/src/taskagent/plugins/__init__.py +0 -0
  108. {task_agent-1.3.0 → task_agent-1.3.1}/src/taskagent/plugins/github.py +0 -0
  109. {task_agent-1.3.0 → task_agent-1.3.1}/src/taskagent/runner.py +0 -0
  110. {task_agent-1.3.0 → task_agent-1.3.1}/src/taskagent/store_registry.py +0 -0
  111. {task_agent-1.3.0 → task_agent-1.3.1}/src/taskagent/templates.py +0 -0
  112. {task_agent-1.3.0 → task_agent-1.3.1}/src/taskagent/theme.py +0 -0
  113. {task_agent-1.3.0 → task_agent-1.3.1}/test-dir/opencode.json +0 -0
  114. {task_agent-1.3.0 → task_agent-1.3.1}/tests/conftest.py +0 -0
  115. {task_agent-1.3.0 → task_agent-1.3.1}/tests/e2e/test_agent_sandboxing.sh +0 -0
  116. {task_agent-1.3.0 → task_agent-1.3.1}/tests/test_agent.py +0 -0
  117. {task_agent-1.3.0 → task_agent-1.3.1}/tests/test_agent_registry.py +0 -0
  118. {task_agent-1.3.0 → task_agent-1.3.1}/tests/test_agy_cli_worker.py +0 -0
  119. {task_agent-1.3.0 → task_agent-1.3.1}/tests/test_atomic_mutations.py +0 -0
  120. {task_agent-1.3.0 → task_agent-1.3.1}/tests/test_auto_commit.py +0 -0
  121. {task_agent-1.3.0 → task_agent-1.3.1}/tests/test_chat_config.py +0 -0
  122. {task_agent-1.3.0 → task_agent-1.3.1}/tests/test_chat_discovery.py +0 -0
  123. {task_agent-1.3.0 → task_agent-1.3.1}/tests/test_chat_last_used.py +0 -0
  124. {task_agent-1.3.0 → task_agent-1.3.1}/tests/test_cli.py +0 -0
  125. {task_agent-1.3.0 → task_agent-1.3.1}/tests/test_cli_windows.py +0 -0
  126. {task_agent-1.3.0 → task_agent-1.3.1}/tests/test_discovery.py +0 -0
  127. {task_agent-1.3.0 → task_agent-1.3.1}/tests/test_github_token.py +0 -0
  128. {task_agent-1.3.0 → task_agent-1.3.1}/tests/test_importers.py +0 -0
  129. {task_agent-1.3.0 → task_agent-1.3.1}/tests/test_inbox.py +0 -0
  130. {task_agent-1.3.0 → task_agent-1.3.1}/tests/test_inbox_watch.py +0 -0
  131. {task_agent-1.3.0 → task_agent-1.3.1}/tests/test_lease.py +0 -0
  132. {task_agent-1.3.0 → task_agent-1.3.1}/tests/test_manager.py +0 -0
  133. {task_agent-1.3.0 → task_agent-1.3.1}/tests/test_manager_git.py +0 -0
  134. {task_agent-1.3.0 → task_agent-1.3.1}/tests/test_mcp.py +0 -0
  135. {task_agent-1.3.0 → task_agent-1.3.1}/tests/test_metrics.py +0 -0
  136. {task_agent-1.3.0 → task_agent-1.3.1}/tests/test_migration.py +0 -0
  137. {task_agent-1.3.0 → task_agent-1.3.1}/tests/test_perf.py +0 -0
  138. {task_agent-1.3.0 → task_agent-1.3.1}/tests/test_plugin_antigravity.py +0 -0
  139. {task_agent-1.3.0 → task_agent-1.3.1}/tests/test_plugin_claude.py +0 -0
  140. {task_agent-1.3.0 → task_agent-1.3.1}/tests/test_project_host_root.py +0 -0
  141. {task_agent-1.3.0 → task_agent-1.3.1}/tests/test_rebind.py +0 -0
  142. {task_agent-1.3.0 → task_agent-1.3.1}/tests/test_remote_attach.py +0 -0
  143. {task_agent-1.3.0 → task_agent-1.3.1}/tests/test_remote_create.py +0 -0
  144. {task_agent-1.3.0 → task_agent-1.3.1}/tests/test_repo_resolve.py +0 -0
  145. {task_agent-1.3.0 → task_agent-1.3.1}/tests/test_runner.py +0 -0
  146. {task_agent-1.3.0 → task_agent-1.3.1}/tests/test_store_registry.py +0 -0
  147. {task_agent-1.3.0 → task_agent-1.3.1}/tests/test_store_symlink.py +0 -0
  148. {task_agent-1.3.0 → task_agent-1.3.1}/tests/test_templates.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: task-agent
3
- Version: 1.3.0
3
+ Version: 1.3.1
4
4
  Summary: A prioritized, file-based task queue for autonomous agentic workers
5
5
  Author-email: Mark Stouffer <1802850+InTEGr8or@users.noreply.github.com>
6
6
  License: MIT
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "task-agent"
3
- version = "1.3.0"
3
+ version = "1.3.1"
4
4
  description = "A prioritized, file-based task queue for autonomous agentic workers"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.12"
@@ -4,7 +4,7 @@ import json
4
4
  from dataclasses import dataclass
5
5
  from datetime import datetime, timezone
6
6
  from pathlib import Path
7
- from typing import List, Optional, Tuple
7
+ from typing import Any, List, Optional, Tuple
8
8
 
9
9
  from agent_registry import (
10
10
  AgentCLIInfo,
@@ -27,6 +27,30 @@ class AgentLastUsedInfo:
27
27
  log_path: Path
28
28
 
29
29
 
30
+ def _extract_text(node: Any) -> str:
31
+ """Recursively extract string content from dicts, lists, or primitive strings."""
32
+ if isinstance(node, str):
33
+ return node
34
+ elif isinstance(node, dict):
35
+ if "text" in node and isinstance(node["text"], str):
36
+ return node["text"]
37
+ if "content" in node:
38
+ return _extract_text(node["content"])
39
+ if "message" in node:
40
+ return _extract_text(node["message"])
41
+ elif isinstance(node, list):
42
+ parts = [_extract_text(item) for item in node]
43
+ return " ".join(p for p in parts if p)
44
+ return ""
45
+
46
+
47
+ def _is_user_role(role_val: Any) -> bool:
48
+ if isinstance(role_val, str):
49
+ r = role_val.lower()
50
+ return r in ("user", "say", "user_input", "user_explicit", "human", "user_feedback")
51
+ return False
52
+
53
+
30
54
  def _parse_last_user_comment_and_timestamp(
31
55
  discovered: DiscoveredChat,
32
56
  ) -> Tuple[datetime, str]:
@@ -48,35 +72,21 @@ def _parse_last_user_comment_and_timestamp(
48
72
  try:
49
73
  data = json.loads(line)
50
74
  if isinstance(data, dict):
75
+ msg = data.get("message")
51
76
  role = (
52
77
  data.get("type")
53
78
  or data.get("role")
54
79
  or data.get("source")
80
+ or (msg.get("role") if isinstance(msg, dict) else None)
55
81
  )
56
- if role in (
57
- "user",
58
- "USER_INPUT",
59
- "USER_EXPLICIT",
60
- "human",
61
- ):
62
- content = (
63
- data.get("content")
64
- or data.get("text")
65
- or data.get("message")
66
- )
67
- if isinstance(content, list):
68
- text_parts = []
69
- for part in content:
70
- if (
71
- isinstance(part, dict)
72
- and part.get("type") == "text"
73
- ):
74
- text_parts.append(part.get("text", ""))
75
- elif isinstance(part, str):
76
- text_parts.append(part)
77
- content = " ".join(text_parts)
78
- if isinstance(content, str) and content.strip():
79
- user_comment = content.strip()
82
+ if _is_user_role(role):
83
+ raw_comment = _extract_text(msg if msg else data).strip()
84
+ if (
85
+ raw_comment
86
+ and not raw_comment.startswith("<local-command-")
87
+ and not raw_comment.startswith("<command-name>")
88
+ ):
89
+ user_comment = raw_comment
80
90
  break
81
91
  except Exception:
82
92
  continue
@@ -104,20 +114,10 @@ def _parse_last_user_comment_and_timestamp(
104
114
  or msg.get("type")
105
115
  or msg.get("source")
106
116
  )
107
- if role in (
108
- "user",
109
- "say",
110
- "user_feedback",
111
- "USER_INPUT",
112
- "human",
113
- ):
114
- content = (
115
- msg.get("text")
116
- or msg.get("content")
117
- or msg.get("message")
118
- )
119
- if isinstance(content, str) and content.strip():
120
- user_comment = content.strip()
117
+ if _is_user_role(role):
118
+ raw_comment = _extract_text(msg).strip()
119
+ if raw_comment:
120
+ user_comment = raw_comment
121
121
  break
122
122
 
123
123
  elif discovered.parser_type == "markdown":
@@ -4273,7 +4273,6 @@ def cmd_agent_last_used(
4273
4273
  table = Table(box=box.ROUNDED, show_header=True, header_style="bold cyan")
4274
4274
  table.add_column("#", style="dim", width=3)
4275
4275
  table.add_column("Agent CLI", style="bold yellow")
4276
- table.add_column("Description", style="white")
4277
4276
  table.add_column("Last Active", style="green")
4278
4277
  table.add_column("Last Comment Snippet", style="dim white")
4279
4278
 
@@ -4283,7 +4282,6 @@ def cmd_agent_last_used(
4283
4282
  table.add_row(
4284
4283
  str(idx),
4285
4284
  item.agent_name,
4286
- item.description,
4287
4285
  rel_time,
4288
4286
  comment_snippet,
4289
4287
  )
@@ -1441,7 +1441,7 @@ wheels = [
1441
1441
 
1442
1442
  [[package]]
1443
1443
  name = "task-agent"
1444
- version = "1.3.0"
1444
+ version = "1.3.1"
1445
1445
  source = { editable = "." }
1446
1446
  dependencies = [
1447
1447
  { name = "agent-cli-registry" },
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