ace-assign 0.73.0 → 0.73.2

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fef270f1f4aded45e3832afc80619dedfd74bee6b00c208cc6a386829ead1186
4
- data.tar.gz: 7f6ea399c6f1133eb70575cac5cd061b4325fdfec5d82e72f2b7520f02cc7231
3
+ metadata.gz: ae08476e5414f7ce2059dded5afe8dfd4de816c47be62e94e80f718633708b1d
4
+ data.tar.gz: 12f65ec84777c48848aa890c96a6bcb668a2d74b1a8adc86859eca9688184cf3
5
5
  SHA512:
6
- metadata.gz: 6d66ac86f32005e91b246c3bde4e9edd4b1fd8ddab3298ca5d7eed1057361da6a8fd34b5f38de8b83bdf19c922783e2f1dcf2b3420573a7535e01531e70c9e41
7
- data.tar.gz: 86fdd937a3421e79937c9940f90ee7d91bccd7e6c556cd1014557ac54da55d0275d7f459f332e2d8508f38f40722d30dd0736cb00952814ed0244dbf60d9bdc7
6
+ metadata.gz: 4bff793e68ecf69f568c4c4eef2dd4245fd62eac2d414f95b24fae2ef29e71a751ab23a07cf9529bd4abf104e766be0d050b0dbcd3fc5453b4c9245cc2fed974
7
+ data.tar.gz: e47b67f585f61f6fd35ecba390c7a4c7c1f658ff57d750c74c8cb59b0673bb2219763698008b6ac2bf8385f59dd8b36e34899df8d2cd6a282a35f3c12f132bd5
data/CHANGELOG.md CHANGED
@@ -7,6 +7,17 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.73.2] - 2026-11-10
11
+
12
+ ### Fixed
13
+
14
+ - Expose assignment discovery through its owner API with per-project configuration and typed read errors.
15
+
16
+ ## [0.73.1] - 2026-10-20
17
+
18
+ ### Fixed
19
+ - Honor `ACE_TOOLCHAIN=installed` for published-gem execution and context propagation without source-runtime fallback; retain default auto development behavior.
20
+
10
21
 
11
22
  ## [0.73.0] - 2026-10-20
12
23
 
data/docs/usage.md CHANGED
@@ -218,3 +218,21 @@ plans. Each plan keeps its own history.
218
218
  The old protected/attempt-evidence and installation paths are removed from the
219
219
  local flow. No journal, admission service, or second queue is required to
220
220
  create, read, or drive an assignment.
221
+
222
+
223
+ ### Reading assignments from another project in Ruby
224
+
225
+ Use the installed owner's explicit-root inventory when observing a worktree:
226
+
227
+ ```ruby
228
+ Ace::Assign::Molecules::AssignmentDiscoverer
229
+ .for_project(project_root: worktree_path)
230
+ .find_all(include_completed: true)
231
+ ```
232
+
233
+ The call resolves that directory's configuration cascade without changing cwd or
234
+ `Ace::Assign.config`. Relative `cache_dir` and `CACHE_BASE` values resolve against
235
+ the supplied root; absolute values remain absolute. An explicit root takes
236
+ precedence over `PROJECT_ROOT_PATH`. CLI commands retain their existing cwd-based
237
+ cache resolution, including relative `CACHE_BASE`. The API reads current owner
238
+ records on every invocation; it creates no observation cache.
@@ -49,8 +49,9 @@ module Ace
49
49
  option :debug, aliases: ["-d"], type: :boolean, default: false, desc: "Show debug output"
50
50
 
51
51
  def call(**options)
52
- discoverer = Molecules::AssignmentDiscoverer.new
53
- manager = Molecules::AssignmentManager.new
52
+ cache = Ace::Assign.cache_dir
53
+ discoverer = Molecules::AssignmentDiscoverer.new(cache_base: cache)
54
+ manager = Molecules::AssignmentManager.new(cache_base: cache)
54
55
  current_id = manager.current_id
55
56
 
56
57
  all_assignments = discoverer.find_all(include_completed: true)
@@ -9,6 +9,11 @@ module Ace
9
9
  # (step scanning) to produce AssignmentInfo objects with full
10
10
  # state, progress, and current step information.
11
11
  class AssignmentDiscoverer
12
+ # Public read-only inventory for a specified project/worktree.
13
+ def self.for_project(project_root:, env: ENV)
14
+ new(cache_base: Ace::Assign.cache_dir_for(project_root: project_root, env: env))
15
+ end
16
+
12
17
  # @param cache_base [String, nil] Base cache directory
13
18
  def initialize(cache_base: nil)
14
19
  @cache_base = cache_base || Ace::Assign.cache_dir
@@ -75,13 +75,13 @@ module Ace
75
75
  working_dir: working_dir,
76
76
  visible_handoff: visible_handoff
77
77
  )
78
- runtime.send_command(pane: pane_target, command: shell_command)
78
+ runtime.send_command(pane: pane_target, command: Ace::Support::Cli::Toolchain.shell_setup + shell_command)
79
79
  rescue Ace::Runtime::Error => e
80
80
  raise Error, "Failed to send fork command: #{e.message}"
81
81
  end
82
82
 
83
83
  def run_script_in_pane(pane_target:, script_path:)
84
- runtime.send_command(pane: pane_target, command: "bash #{File.expand_path(script_path).shellescape}")
84
+ runtime.send_command(pane: pane_target, command: Ace::Support::Cli::Toolchain.shell_setup + "bash #{File.expand_path(script_path).shellescape}")
85
85
  rescue Ace::Runtime::Error => e
86
86
  raise Error, "Failed to send fork command: #{e.message}"
87
87
  end
@@ -135,6 +135,10 @@ module Ace
135
135
  def build_exec_command(command:, env:)
136
136
  cmd = Array(command).map { |part| Shellwords.escape(part.to_s) }.join(" ")
137
137
  env_hash = env.respond_to?(:to_h) ? env.to_h : {}
138
+ if Ace::Support::Cli::Toolchain.installed?
139
+ env_hash = env_hash.merge(Ace::Support::Cli::Toolchain.child_environment)
140
+ env_hash.keys.grep(/\ABUNDLER?_/).each { |key| env_hash[key] = nil }
141
+ end
138
142
  unset_parts = []
139
143
  assign_parts = []
140
144
 
@@ -54,6 +54,11 @@ module Ace
54
54
  configured_skill_paths = skill_paths || Ace::Assign.config["skill_source_paths"]
55
55
  configured_workflow_paths = workflow_paths || Ace::Assign.config["workflow_source_paths"]
56
56
 
57
+ if Ace::Support::Cli::Toolchain.installed?
58
+ configured_skill_paths = []
59
+ configured_workflow_paths = []
60
+ end
61
+
57
62
  canonical_paths = discover_canonical_skill_source_paths
58
63
  canonical_workflow_paths = discover_canonical_workflow_source_paths
59
64
  override_paths = normalize_paths(configured_skill_paths || [])
@@ -459,6 +464,8 @@ module Ace
459
464
  end
460
465
  end
461
466
 
467
+ return registry_paths.uniq if Ace::Support::Cli::Toolchain.installed?
468
+
462
469
  (registry_paths + discover_package_default_source_paths(package_glob)).uniq
463
470
  end
464
471
 
@@ -501,6 +508,8 @@ module Ace
501
508
  end
502
509
 
503
510
  def external_implicit_source?(source, directory)
511
+ return false if Ace::Support::Cli::Toolchain.installed? && source.origin.to_s == "gem-default"
512
+
504
513
  return false if path_within_project?(directory)
505
514
  return false if explicit_registration?(source)
506
515
 
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Ace
4
4
  module Assign
5
- VERSION = "0.73.0"
5
+ VERSION = "0.73.2"
6
6
  end
7
7
  end
data/lib/ace/assign.rb CHANGED
@@ -47,6 +47,19 @@ module Ace
47
47
  end
48
48
  end
49
49
 
50
+ # Resolve another project's inventory without changing cwd or the cached
51
+ # configuration used by this process. Explicit roots override PROJECT_ROOT_PATH.
52
+ def self.cache_dir_for(project_root:, env: ENV)
53
+ root = File.expand_path(project_root)
54
+ override = env["CACHE_BASE"]
55
+ return File.expand_path(override, root) unless override.to_s.empty?
56
+
57
+ gem_root = Gem.loaded_specs["ace-assign"]&.gem_dir || File.expand_path("../..", __dir__)
58
+ config = Ace::Support::Config.create(start_path: root, gem_path: gem_root,
59
+ test_mode: false).resolve_namespace("assign").data
60
+ File.expand_path(config.fetch("cache_dir", ".ace-local/assign"), root)
61
+ end
62
+
50
63
  # Reset config cache (useful for testing)
51
64
  def self.reset_config!
52
65
  @config = nil
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ace-assign
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.73.0
4
+ version: 0.73.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michal Czyz
8
8
  bindir: exe
9
9
  cert_chain: []
10
- date: 2026-10-20 00:00:00.000000000 Z
10
+ date: 2026-11-10 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: ace-llm-providers-cli
@@ -16,6 +16,9 @@ dependencies:
16
16
  - - "~>"
17
17
  - !ruby/object:Gem::Version
18
18
  version: 0.36.1
19
+ - - ">="
20
+ - !ruby/object:Gem::Version
21
+ version: 0.36.3
19
22
  type: :runtime
20
23
  prerelease: false
21
24
  version_requirements: !ruby/object:Gem::Requirement
@@ -23,6 +26,9 @@ dependencies:
23
26
  - - "~>"
24
27
  - !ruby/object:Gem::Version
25
28
  version: 0.36.1
29
+ - - ">="
30
+ - !ruby/object:Gem::Version
31
+ version: 0.36.3
26
32
  - !ruby/object:Gem::Dependency
27
33
  name: ace-support-fs
28
34
  requirement: !ruby/object:Gem::Requirement
@@ -78,6 +84,9 @@ dependencies:
78
84
  - - "~>"
79
85
  - !ruby/object:Gem::Version
80
86
  version: '0.6'
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: 0.6.10
81
90
  type: :runtime
82
91
  prerelease: false
83
92
  version_requirements: !ruby/object:Gem::Requirement
@@ -85,6 +94,9 @@ dependencies:
85
94
  - - "~>"
86
95
  - !ruby/object:Gem::Version
87
96
  version: '0.6'
97
+ - - ">="
98
+ - !ruby/object:Gem::Version
99
+ version: 0.6.10
88
100
  - !ruby/object:Gem::Dependency
89
101
  name: ace-support-core
90
102
  requirement: !ruby/object:Gem::Requirement
@@ -106,6 +118,9 @@ dependencies:
106
118
  - - "~>"
107
119
  - !ruby/object:Gem::Version
108
120
  version: '0.18'
121
+ - - ">="
122
+ - !ruby/object:Gem::Version
123
+ version: 0.18.4
109
124
  type: :runtime
110
125
  prerelease: false
111
126
  version_requirements: !ruby/object:Gem::Requirement
@@ -113,6 +128,9 @@ dependencies:
113
128
  - - "~>"
114
129
  - !ruby/object:Gem::Version
115
130
  version: '0.18'
131
+ - - ">="
132
+ - !ruby/object:Gem::Version
133
+ version: 0.18.4
116
134
  - !ruby/object:Gem::Dependency
117
135
  name: ace-support-nav
118
136
  requirement: !ruby/object:Gem::Requirement
@@ -120,6 +138,9 @@ dependencies:
120
138
  - - "~>"
121
139
  - !ruby/object:Gem::Version
122
140
  version: '0.28'
141
+ - - ">="
142
+ - !ruby/object:Gem::Version
143
+ version: 0.28.8
123
144
  type: :runtime
124
145
  prerelease: false
125
146
  version_requirements: !ruby/object:Gem::Requirement
@@ -127,6 +148,9 @@ dependencies:
127
148
  - - "~>"
128
149
  - !ruby/object:Gem::Version
129
150
  version: '0.28'
151
+ - - ">="
152
+ - !ruby/object:Gem::Version
153
+ version: 0.28.8
130
154
  - !ruby/object:Gem::Dependency
131
155
  name: ace-b36ts
132
156
  requirement: !ruby/object:Gem::Requirement
@@ -232,6 +256,9 @@ dependencies:
232
256
  - - "~>"
233
257
  - !ruby/object:Gem::Version
234
258
  version: '0.6'
259
+ - - ">="
260
+ - !ruby/object:Gem::Version
261
+ version: 0.8.1
235
262
  type: :runtime
236
263
  prerelease: false
237
264
  version_requirements: !ruby/object:Gem::Requirement
@@ -239,6 +266,9 @@ dependencies:
239
266
  - - "~>"
240
267
  - !ruby/object:Gem::Version
241
268
  version: '0.6'
269
+ - - ">="
270
+ - !ruby/object:Gem::Version
271
+ version: 0.8.1
242
272
  - !ruby/object:Gem::Dependency
243
273
  name: ace-support-test-helpers
244
274
  requirement: !ruby/object:Gem::Requirement