@passioncode-ai/fabric-agent-adapter 0.62.0 → 0.64.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/CHANGELOG.md +136 -0
  2. package/README.md +9 -5
  3. package/SECURITY.md +6 -1
  4. package/package.json +1 -1
  5. package/plugins/fabric-agent-adapter/.claude-plugin/plugin.json +1 -1
  6. package/plugins/fabric-agent-adapter/hooks/hooks.json +13 -1
  7. package/plugins/fabric-agent-adapter/skills/adapting-projects-to-fabric/SKILL.md +6 -1
  8. package/plugins/fabric-agent-adapter/skills/building-fabric-services/SKILL.md +1 -1
  9. package/plugins/fabric-agent-adapter/skills/building-fabric-services/recipes/support-agent/README.md +48 -7
  10. package/plugins/fabric-agent-adapter/skills/building-fabric-services/recipes/support-agent/channel-agent.example.json +103 -0
  11. package/plugins/fabric-agent-adapter/skills/building-fabric-services/recipes/support-agent/config.example.json +1 -0
  12. package/plugins/fabric-agent-adapter/skills/building-fabric-services/recipes/support-agent/support_agent.py +141 -17
  13. package/plugins/fabric-agent-adapter/skills/building-fabric-services/references/package.md +2 -2
  14. package/plugins/fabric-agent-adapter/skills/building-fabric-services/scripts/dashboard_kit.py +2 -0
  15. package/plugins/fabric-agent-adapter/skills/building-fabric-services/scripts/fabric_auth.py +2 -2
  16. package/plugins/fabric-agent-adapter/skills/building-fabric-services/scripts/fabric_estate.py +1 -1
  17. package/plugins/fabric-agent-adapter/skills/building-fabric-services/scripts/kit.json +183 -3
  18. package/plugins/fabric-agent-adapter/skills/creating-fabric-agents/SKILL.md +4 -3
  19. package/plugins/fabric-agent-adapter/skills/creating-fabric-agents/references/agents-that-answer-people.md +5 -2
  20. package/plugins/fabric-agent-adapter/skills/creating-fabric-agents/references/practices.md +52 -0
  21. package/plugins/fabric-agent-adapter/skills/creating-fabric-agents/references/resilience-and-autonomy.md +2 -1
  22. package/plugins/fabric-agent-adapter/skills/working-with-fabric/SKILL.md +21 -20
  23. package/plugins/fabric-agent-adapter/skills/working-with-fabric/references/native-host-hooks.md +7 -1
  24. package/plugins/fabric-agent-adapter/skills/working-with-fabric/references/on-demand-session.md +209 -0
  25. package/plugins/fabric-agent-adapter/skills/working-with-fabric/references/project-board.md +34 -6
  26. package/plugins/fabric-agent-adapter/skills/working-with-fabric/references/session-hooks.md +39 -6
  27. package/plugins/fabric-agent-adapter/skills/working-with-fabric/scripts/fabric_session.py +4 -0
  28. package/plugins/fabric-agent-adapter/skills/working-with-fabric/scripts/fabric_session_cli.py +455 -9
  29. package/plugins/fabric-agent-adapter/skills/working-with-fabric/scripts/fabric_session_env.py +35 -6
  30. package/plugins/fabric-agent-adapter/skills/working-with-fabric/scripts/fabric_session_hosts.py +4 -1
  31. package/plugins/fabric-agent-adapter/skills/working-with-fabric/scripts/fabric_session_mail.py +8 -1
@@ -9,6 +9,7 @@ import re
9
9
  import sys
10
10
  import time
11
11
  from pathlib import Path
12
+ from typing import Any, Callable, Dict, List, Optional, Sequence, Tuple
12
13
 
13
14
  from fabric_session_env import ( # noqa: E402 - the kit (FAA-65)
14
15
  CONFIG_CAP,
@@ -300,7 +301,9 @@ def install_host_hooks_cli(argv: Sequence[str], env: Optional[Dict[str, str]] =
300
301
  out("Apply it, on the person's go-ahead: fabric_session.py install-host-hooks --host %s --apply "
301
302
  "--expect-sha256 %s" % (args.host, digest))
302
303
  out("The hook only prints the preamble at session start (no turn observation, no unread count: %s "
303
- "cannot rejoin its Fabric session yet). It is silent in a session Fabric launched.%s" % (
304
+ "cannot rejoin its Fabric session yet), or the exit contract in a session Fabric started on a board "
305
+ "request, where it also records which session holds that request (its session id and, after a /clear, the one it replaced, the agent's process id and a time, 0600, in "
306
+ "the user's cache folder) and prunes such records after 7 days; otherwise it is silent in a session Fabric launched.%s" % (
304
307
  HOSTS[args.host], " Codex may ask you to trust the new hook (/hooks) before it runs."
305
308
  if args.host == "codex" else ""))
306
309
  return 0
@@ -4,12 +4,14 @@ from __future__ import annotations
4
4
 
5
5
  import json
6
6
  import os
7
+ import re
7
8
  import sys
8
9
  import time
9
10
  from pathlib import Path
10
- from typing import Any, Dict, Optional, Tuple
11
+ from typing import Any, Callable, Dict, Optional, Sequence, Tuple
11
12
 
12
13
  from fabric_session_env import ( # noqa: E402 - the kit (FAA-65)
14
+ DISPATCH_WORKFLOW,
13
15
  BOARD_STATUS_TOOL,
14
16
  HOOK_FEATURE,
15
17
  SESSION_ID,
@@ -179,6 +181,11 @@ def watch_mail_cli(argv: Sequence[str], env: Optional[Dict[str, str]] = None) ->
179
181
  if fabric_launched(env):
180
182
  sys.stderr.write("watch-mail: this session was launched by Fabric; call com.status with your own tools.\n")
181
183
  return 2
184
+ if re.fullmatch(DISPATCH_WORKFLOW, env.get("FABRIC_DISPATCH_WORKFLOW") or ""):
185
+ sys.stderr.write("watch-mail: this session runs under a board request's environment (its run or a helper "
186
+ "of it); watch-mail does not start here (working-with-fabric "
187
+ "references/on-demand-session.md).\n")
188
+ return 2
182
189
  cwd = Path(args.cwd).expanduser()
183
190
  if not claude_registration(cwd, env):
184
191
  sys.stderr.write("watch-mail: Claude Code has no MCP server named fabric for %s; see working-with-fabric.\n" % cwd)