ensue-cli 0.2.0__tar.gz → 0.2.2__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 (31) hide show
  1. {ensue_cli-0.2.0 → ensue_cli-0.2.2}/PKG-INFO +21 -2
  2. {ensue_cli-0.2.0 → ensue_cli-0.2.2}/README.md +20 -1
  3. {ensue_cli-0.2.0 → ensue_cli-0.2.2}/pyproject.toml +1 -1
  4. ensue_cli-0.2.2/src/ensue_cli/agent.py +1962 -0
  5. {ensue_cli-0.2.0 → ensue_cli-0.2.2}/src/ensue_cli/agent_socket.py +67 -9
  6. ensue_cli-0.2.2/src/ensue_cli/campaign_data.py +183 -0
  7. {ensue_cli-0.2.0 → ensue_cli-0.2.2}/src/ensue_cli/cluster.py +12 -2
  8. {ensue_cli-0.2.0 → ensue_cli-0.2.2}/src/ensue_cli/repo.py +44 -17
  9. ensue_cli-0.2.2/tests/test_agent.py +1065 -0
  10. ensue_cli-0.2.2/tests/test_agent_data.py +214 -0
  11. ensue_cli-0.2.2/tests/test_agent_scorecard.py +560 -0
  12. {ensue_cli-0.2.0 → ensue_cli-0.2.2}/tests/test_agent_socket.py +92 -12
  13. ensue_cli-0.2.2/tests/test_campaign_data.py +309 -0
  14. {ensue_cli-0.2.0 → ensue_cli-0.2.2}/tests/test_cluster.py +18 -2
  15. {ensue_cli-0.2.0 → ensue_cli-0.2.2}/tests/test_repo.py +58 -12
  16. ensue_cli-0.2.2/tests/test_session_scripts.py +463 -0
  17. ensue_cli-0.2.0/src/ensue_cli/agent.py +0 -1152
  18. ensue_cli-0.2.0/tests/test_agent.py +0 -756
  19. ensue_cli-0.2.0/tests/test_session_scripts.py +0 -290
  20. {ensue_cli-0.2.0 → ensue_cli-0.2.2}/.gitignore +0 -0
  21. {ensue_cli-0.2.0 → ensue_cli-0.2.2}/Makefile +0 -0
  22. {ensue_cli-0.2.0 → ensue_cli-0.2.2}/src/ensue_cli/__init__.py +0 -0
  23. {ensue_cli-0.2.0 → ensue_cli-0.2.2}/src/ensue_cli/cli.py +0 -0
  24. {ensue_cli-0.2.0 → ensue_cli-0.2.2}/src/ensue_cli/client.py +0 -0
  25. {ensue_cli-0.2.0 → ensue_cli-0.2.2}/src/ensue_cli/mem.py +0 -0
  26. {ensue_cli-0.2.0 → ensue_cli-0.2.2}/tests/__init__.py +0 -0
  27. {ensue_cli-0.2.0 → ensue_cli-0.2.2}/tests/fakes.py +0 -0
  28. {ensue_cli-0.2.0 → ensue_cli-0.2.2}/tests/test_integration.py +0 -0
  29. {ensue_cli-0.2.0 → ensue_cli-0.2.2}/tests/test_mem.py +0 -0
  30. {ensue_cli-0.2.0 → ensue_cli-0.2.2}/tests/test_mem_integration.py +0 -0
  31. {ensue_cli-0.2.0 → ensue_cli-0.2.2}/tests/test_unit.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: ensue-cli
3
- Version: 0.2.0
3
+ Version: 0.2.2
4
4
  Summary: CLI for Ensue Memory - a distributed memory network for AI agents built on MCP, enabling persistent, shared context across conversations and applications
5
5
  Project-URL: Homepage, https://www.ensue-network.ai
6
6
  Project-URL: Repository, https://github.com/mutable-state-inc/ensue-cli
@@ -86,6 +86,20 @@ echo '{"text": "baseline measured"}' | ensue mem new LOOP-acme-conversation/agen
86
86
  `text` field (or first line) unless you pass `-d`.
87
87
  - Every verb takes `--json`. `ensue mem <verb> --help` has the details.
88
88
 
89
+ ## A campaign's code: `ensue repo`
90
+
91
+ Each campaign has a git repository hosted by Ensue. `--project` takes the campaign's id or
92
+ slug (`ensue list_available_projects` lists them):
93
+
94
+ ```bash
95
+ ensue repo clone --project <slug> [dir] # clone it, authenticated with ENSUE_TOKEN
96
+ ensue repo import --project <slug> <git-url> # seed an empty one from a repository, once
97
+ ensue repo url --project <slug> # print the clone URL (no credentials)
98
+ ```
99
+
100
+ The key is written to `~/.ensue/git-credentials` (mode 0600) for git to read; it is never put in
101
+ a URL or on the command line.
102
+
89
103
  ## Running an autoresearch agent: `ensue agent`
90
104
 
91
105
  `ensue agent` is the protocol an autoresearch agent follows inside one campaign
@@ -97,7 +111,8 @@ ensue agent status # phase, measure, best, editable files, m
97
111
  ensue agent steer # read the person's new messages
98
112
  ensue agent files | check [--fix] # what may be edited; current changes, allowed or locked
99
113
  ensue agent measure measure.json # propose a measure (runs the baseline itself)
100
- ensue agent idea idea.json # record an idea before trying it
114
+ ensue agent queue # ideas queued for the agent, not tried yet, theirs first
115
+ ensue agent idea idea.json # record an idea of its own before trying it
101
116
  ensue agent run --idea KEY -m "..." # commit, score, keep or revert, record the run
102
117
  ensue agent note "..." -e RUN_KEY # record a lesson, citing runs
103
118
  ensue agent say "..." | doing "..." # message the person; one-line status
@@ -111,6 +126,10 @@ ensue agent say "..." | doing "..." # message the person; one-line status
111
126
  - `measure`, `idea` and `run` refuse while the person has unread messages,
112
127
  `run` waits for an accepted measure, and Stop exits every working verb with
113
128
  code 3.
129
+ - The person's queued ideas (a `/try`, or one added in the chat) come first:
130
+ `idea` refuses while one is untried. `queue` lists them, then onboarding's
131
+ proposals, and `run --idea KEY` moves each shared-schema hypothesis
132
+ (`deepearth.hypothesis/1`) to `running`, then `completed` or `rejected`.
114
133
 
115
134
  ## Configuration
116
135
 
@@ -54,6 +54,20 @@ echo '{"text": "baseline measured"}' | ensue mem new LOOP-acme-conversation/agen
54
54
  `text` field (or first line) unless you pass `-d`.
55
55
  - Every verb takes `--json`. `ensue mem <verb> --help` has the details.
56
56
 
57
+ ## A campaign's code: `ensue repo`
58
+
59
+ Each campaign has a git repository hosted by Ensue. `--project` takes the campaign's id or
60
+ slug (`ensue list_available_projects` lists them):
61
+
62
+ ```bash
63
+ ensue repo clone --project <slug> [dir] # clone it, authenticated with ENSUE_TOKEN
64
+ ensue repo import --project <slug> <git-url> # seed an empty one from a repository, once
65
+ ensue repo url --project <slug> # print the clone URL (no credentials)
66
+ ```
67
+
68
+ The key is written to `~/.ensue/git-credentials` (mode 0600) for git to read; it is never put in
69
+ a URL or on the command line.
70
+
57
71
  ## Running an autoresearch agent: `ensue agent`
58
72
 
59
73
  `ensue agent` is the protocol an autoresearch agent follows inside one campaign
@@ -65,7 +79,8 @@ ensue agent status # phase, measure, best, editable files, m
65
79
  ensue agent steer # read the person's new messages
66
80
  ensue agent files | check [--fix] # what may be edited; current changes, allowed or locked
67
81
  ensue agent measure measure.json # propose a measure (runs the baseline itself)
68
- ensue agent idea idea.json # record an idea before trying it
82
+ ensue agent queue # ideas queued for the agent, not tried yet, theirs first
83
+ ensue agent idea idea.json # record an idea of its own before trying it
69
84
  ensue agent run --idea KEY -m "..." # commit, score, keep or revert, record the run
70
85
  ensue agent note "..." -e RUN_KEY # record a lesson, citing runs
71
86
  ensue agent say "..." | doing "..." # message the person; one-line status
@@ -79,6 +94,10 @@ ensue agent say "..." | doing "..." # message the person; one-line status
79
94
  - `measure`, `idea` and `run` refuse while the person has unread messages,
80
95
  `run` waits for an accepted measure, and Stop exits every working verb with
81
96
  code 3.
97
+ - The person's queued ideas (a `/try`, or one added in the chat) come first:
98
+ `idea` refuses while one is untried. `queue` lists them, then onboarding's
99
+ proposals, and `run --idea KEY` moves each shared-schema hypothesis
100
+ (`deepearth.hypothesis/1`) to `running`, then `completed` or `rejected`.
82
101
 
83
102
  ## Configuration
84
103
 
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "ensue-cli"
7
- version = "0.2.0"
7
+ version = "0.2.2"
8
8
  description = "CLI for Ensue Memory - a distributed memory network for AI agents built on MCP, enabling persistent, shared context across conversations and applications"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.9"