ace-bundle 0.40.6 → 0.43.5

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: 0b5231de647366436e34e750b7070ae8daa8d7c1733883b22e2bf4ebe75f1d5e
4
- data.tar.gz: ec74711c080c94236e3fb8812f41e278c1c43e10698e97b7ff1301b1588ddcf4
3
+ metadata.gz: ba02c4e03000125c170e6c9858abee76a055a62ab828f12a4cb234fdba3f0682
4
+ data.tar.gz: b5e3b567fe50388b678012a3b317abb015bb86b3ca50be62ba505637ad30fc5f
5
5
  SHA512:
6
- metadata.gz: 730fab64647d209e698f5a45e6cd2472092b349eeebbfa2815851b296ace2785148ab30efae232f69e9fa5f53e6b110e1f695792ae6c290ebc079307e820b005
7
- data.tar.gz: 8f1a0a6b38256511199d64f17494950f33052bc9c0decf6bc05964b283fc9469025b05b89a357e19d62d5819765937b01f43537956b47e995acd448e25a44e8b
6
+ metadata.gz: f9c6878943db58fdfe45dcd739efbb9a4cc0513d8b371c28d528c224177b021dbd57b0667570633355a84d9cc12e0bc326685a5e60f71c512aa6788641f1412f
7
+ data.tar.gz: 4b5454c8c2f76da7e3ab2823068a0137d161187d39042ee1d5f744c225405512f7248c2d7fb5d55f80bd1dd8dc7c965fb11c2e3aa4afd27c71f16d43cf98d72e
@@ -0,0 +1,40 @@
1
+ ---
2
+ description: Lightweight project starter preset for first-run onboarding
3
+ bundle:
4
+ params:
5
+ output: cache
6
+ max_size: 10485760
7
+ timeout: 30
8
+ compressor_mode: agent
9
+ embed_document_source: true
10
+ sections:
11
+ vision:
12
+ title: Project Vision
13
+ content: |
14
+ TODO: Add a one-paragraph project overview and current priorities.
15
+ Move this to docs/vision.md later if desired.
16
+
17
+ structure:
18
+ title: Project Structure
19
+ content: |
20
+ TODO: Describe the top-level folders and where core logic lives.
21
+ Move this to docs/blueprint.md once project docs exist.
22
+
23
+ quick_status:
24
+ title: Quick Status
25
+ compressor_mode: exact
26
+ commands:
27
+ - pwd
28
+ - date
29
+
30
+ starter_guidance:
31
+ title: Starter Guidance
32
+ content: |
33
+ TODO: Add concise onboarding notes for contributors.
34
+ Replace placeholders with your project's goals and current priorities.
35
+ ---
36
+
37
+ # Project Context
38
+
39
+ Use this lightweight preset as a starting point for new projects.
40
+ Expand sections as your team documentation grows.
@@ -1,35 +1,41 @@
1
1
  ---
2
- description: Project-wide context
2
+ description: Project-wide context starter preset for generic projects
3
3
  bundle:
4
4
  params:
5
5
  output: cache
6
6
  max_size: 10485760
7
7
  timeout: 30
8
+ compressor_mode: agent
8
9
  embed_document_source: true
9
- files:
10
- - docs/vision.md
11
- - docs/blueprint.md
12
- - docs/architecture.md
13
- - docs/decisions.md
14
- - docs/tools.md
15
- commands:
16
- - pwd
17
- - date
18
- - git status --short
19
- - ace-taskflow recent --limit 3
20
- - ace-taskflow next --limit 3
21
- - eza -R -1 -L 2 --git-ignore --absolute $PROJECT_ROOT_PATH
22
- # Optional: Include diffs (delegated to ace-git for consistent filtering)
23
- # diffs:
24
- # - origin/main...HEAD
25
- # Or use ranges with options (respects global .ace/diff/config.yml):
26
- # diff:
27
- # ranges:
28
- # - origin/main...HEAD
29
- # paths:
30
- # - "lib/**/*.rb"
10
+ sections:
11
+ vision:
12
+ title: Project Vision
13
+ content: |
14
+ TODO: Add your project's mission, users, and success criteria.
15
+ Optionally move this to docs/vision.md once your docs structure is established.
16
+
17
+ architecture:
18
+ title: System Architecture
19
+ content: |
20
+ TODO: Add key architecture notes, major components, and decision records.
21
+ You can later split this into docs/architecture.md, docs/decisions.md, and docs/blueprint.md.
22
+
23
+ project_status:
24
+ title: Project Status
25
+ compressor_mode: exact
26
+ commands:
27
+ - pwd
28
+ - date
29
+ - ls -1
30
+
31
+ onboarding_notes:
32
+ title: Onboarding Notes
33
+ content: |
34
+ TODO: Replace this preset body text with your project-specific onboarding guidance.
35
+ Include your architecture highlights, coding standards, and ownership boundaries.
31
36
  ---
32
37
 
33
38
  # Project Context
34
39
 
35
- You are working on the Coding Agent Workflow Toolkit (Meta) - a comprehensive meta-repository that provides documentation and guidance for setting up AI-assisted development workflow systems.
40
+ You are working in a project that uses ACE tooling.
41
+ Treat this as starter scaffolding and customize it for your codebase.
data/CHANGELOG.md CHANGED
@@ -6,6 +6,77 @@ The format is based on [Keep a Changelog][1], and this project adheres to [Seman
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [0.43.5] - 2026-04-19
10
+
11
+ ### Changed
12
+ - Documented the `bundle.sources` preset shorthand in the configuration and getting-started guides so generated bundle presets can use the public file, command, and preset source-list contract.
13
+
14
+ ## [0.43.4] - 2026-04-19
15
+
16
+ ### Fixed
17
+ - Added support for documented `bundle.sources` frontmatter entries so file, command, and preset sources expand through the same public bundle path as direct `files`, `commands`, and `presets` keys.
18
+
19
+ ## [0.43.3] - 2026-04-16
20
+
21
+ ### Technical
22
+ - Aligned `TS-BUNDLE-001` preset-loading verification with the documented `**/*.js` routing behavior so valid preset matches are preserved without treating unrelated files as failures.
23
+
24
+ ## [0.43.2] - 2026-04-16
25
+
26
+ ### Fixed
27
+ - Corrected `TS-BUNDLE-001` file-pattern verification so root-level markdown matched by `*.md` remains valid while genuinely out-of-scope test files stay excluded.
28
+
29
+ ## [0.43.1] - 2026-04-16
30
+
31
+ ### Technical
32
+ - Updated `TS-BUNDLE-001` sandbox setup to source `mise.toml` from `${ACE_E2E_SOURCE_ROOT:-$PROJECT_ROOT_PATH}` so goal runs stay compatible with read-only source mounts.
33
+
34
+ ## [0.43.0] - 2026-04-14
35
+
36
+ ### Changed
37
+ - Rewrote `TS-BUNDLE-001` to a retained public-surface goal set by consolidating file-pattern checks into Goal 2, reframing Goal 4 around user-visible routing behavior, and renaming Goal 5 to CLI output consistency and error semantics.
38
+
39
+ ### Technical
40
+ - Updated scenario/runner/verifier manifests to the retained 4-goal layout and removed the standalone TC-003 goal assets.
41
+
42
+ ## [0.42.1] - 2026-04-13
43
+
44
+ ### Changed
45
+ - Completed the batch i05 migration follow-through for this package and aligned it with the restarted `fast` / `feat` / `e2e` verification model.
46
+
47
+ ### Technical
48
+ - Included in the coordinated assignment-driven patch release for batch i05 package updates.
49
+
50
+
51
+ ## [0.42.0] - 2026-04-12
52
+
53
+ ### Changed
54
+ - Expanded `as-onboard` canonical skill metadata so the public `onboard` assign step is fully described via skill-owned `assign.steps`.
55
+ - Migrated package tests to the restarted `fast` / `feat` / `e2e` model: deterministic suites now live under `test/fast/` and legacy `test/integration/` coverage moved to `test/feat/`.
56
+ - Updated E2E TC-004 output-routing assertions to accept the observed explicit-stdio routing behavior when compression emits cache-save messaging.
57
+
58
+ ### Fixed
59
+ - Added end-to-end support for diff path filters in bundle diff configs so `paths` now flows through section normalization and into `git diff -- <paths>`.
60
+ - Made `workflow_resolution_test` robust across repo and sandbox execution contexts by asserting workflow-suffix resolution against package-local WFI sources.
61
+ - Hardened TS-BUNDLE-001 sandbox setup by skipping `mise.toml` trust when that file is not present in package-copy sandboxes.
62
+ - Reduced brittle TC-001 verifier gating from strict line-count requirements to substantive observed output checks.
63
+
64
+ ## [0.41.2] - 2026-03-31
65
+
66
+ ### Fixed
67
+ - Made default bootstrap presets self-contained so generated onboarding guidance no longer depends on external release-specific context.
68
+
69
+ ## [0.41.1] - 2026-03-30
70
+
71
+ ### Fixed
72
+ - Removed the generic-project preset dependency on `ace-task` by replacing the task listing command with `ls -1` for plain-repo compatibility.
73
+
74
+ ## [0.41.0] - 2026-03-29
75
+
76
+ ### Changed
77
+ - Reworked shipped default bootstrap presets for generic projects: `project` now uses section-driven content, removes stale monorepo/taskflow copy, and includes TODO-oriented scaffold guidance.
78
+ - Added a shipped `project-base` preset for lightweight onboarding context in fresh repositories.
79
+
9
80
  ## [0.40.6] - 2026-03-29
10
81
 
11
82
  ### Technical
@@ -19,10 +19,19 @@ integration:
19
19
  - pi
20
20
  providers: {}
21
21
  assign:
22
- source: wfi://onboard
23
22
  steps:
24
23
  - name: onboard
25
24
  description: Load project context and understand the codebase
25
+ prerequisites: []
26
+ produces: [project-context]
27
+ consumes: []
28
+ context:
29
+ default: null
30
+ reason: "Onboarding needs access to the main conversation context"
31
+ when_to_skip:
32
+ - "Already onboarded in a previous assignment"
33
+ - "Working in a context where project is already loaded"
34
+ effort: light
26
35
  tags: [setup, context-loading]
27
36
  skill:
28
37
  kind: workflow
@@ -76,7 +76,7 @@ Analyze the loaded context and prepare a concise summary covering:
76
76
  > "Load base preset"
77
77
 
78
78
  **Files** - Task-specific context, custom one-off requirements:
79
- > `ace-bundle .ace-taskflow/v.0.9.0/context/task-084.md`
79
+ > `ace-bundle .ace-task/v.0.9.0/context/task-084.md`
80
80
  > "Load task-specific context file"
81
81
 
82
82
  > `ace-bundle /path/to/your/project/context.yml`
@@ -331,7 +331,7 @@ module Ace
331
331
  since_ref = diff_config[:since] || diff_config["since"]
332
332
  normalized[:ranges] = ["#{since_ref}...HEAD"]
333
333
  end
334
- # Note: paths filtering will be handled by ace-git when implemented
334
+ normalized[:paths] = diff_config[:paths] || diff_config["paths"] if diff_config[:paths] || diff_config["paths"]
335
335
  elsif diff_config.is_a?(String)
336
336
  # Single range string
337
337
  normalized[:ranges] = [diff_config]
@@ -376,6 +376,10 @@ module Ace
376
376
  merged[:ranges] = ((merged[:ranges] || []) + (new_normalized[:ranges] || [])).uniq
377
377
  end
378
378
 
379
+ if merged[:paths] || new_normalized[:paths]
380
+ merged[:paths] = ((merged[:paths] || []) + (new_normalized[:paths] || [])).uniq
381
+ end
382
+
379
383
  # Merge diffs arrays (legacy format)
380
384
  if merged[:diffs] || new_normalized[:diffs]
381
385
  merged[:diffs] = ((merged[:diffs] || []) + (new_normalized[:diffs] || [])).uniq
@@ -449,6 +449,7 @@ module Ace
449
449
  (frontmatter.keys & %w[preset presets files commands include exclude diffs]).any?
450
450
  # Use frontmatter as the main config
451
451
  config = unwrap_bundle_config(frontmatter)
452
+ config = normalize_bundle_sources(config)
452
453
 
453
454
  # Merge params into options if present
454
455
  params = config["params"]
@@ -613,6 +614,7 @@ module Ace
613
614
 
614
615
  def load_from_preset_config(preset, options)
615
616
  bundle_config = preset[:bundle] || {}
617
+ bundle_config = normalize_bundle_sources(bundle_config)
616
618
 
617
619
  # Apply CLI overrides to context config (CLI takes precedence)
618
620
  bundle_config = apply_cli_overrides(bundle_config)
@@ -890,6 +892,8 @@ module Ace
890
892
  end
891
893
 
892
894
  def process_template_config(config)
895
+ config = normalize_bundle_sources(config)
896
+
893
897
  # Apply CLI overrides to config (CLI takes precedence)
894
898
  config = apply_cli_overrides(config)
895
899
 
@@ -956,9 +960,10 @@ module Ace
956
960
  # Process diffs
957
961
  if config["diffs"] && config["diffs"].any?
958
962
  data[:diffs] ||= []
963
+ diff_paths = config["paths"] || config[:paths] || []
959
964
  config["diffs"].each do |diff_range|
960
- result = generate_diff_safe(diff_range)
961
- data[:diffs] << result.slice(:range, :output, :success, :error, :error_type)
965
+ result = generate_diff_safe(diff_range, paths: diff_paths)
966
+ data[:diffs] << result.slice(:range, :paths, :output, :success, :error, :error_type)
962
967
 
963
968
  unless result[:success]
964
969
  error_prefix = (result[:error_type] == :git_error) ? "Git diff failed" : "Invalid diff range"
@@ -988,6 +993,39 @@ module Ace
988
993
  bundle
989
994
  end
990
995
 
996
+ def normalize_bundle_sources(config)
997
+ return config unless config.is_a?(Hash)
998
+
999
+ sources = config["sources"] || config[:sources]
1000
+ return config unless sources.is_a?(Array) && sources.any?
1001
+
1002
+ normalized = config.dup
1003
+ files = Array(normalized["files"] || normalized[:files])
1004
+ commands = Array(normalized["commands"] || normalized[:commands])
1005
+ presets = Array(normalized["presets"] || normalized[:presets])
1006
+
1007
+ sources.each do |source|
1008
+ case source
1009
+ when Hash
1010
+ source_file = source["file"] || source[:file]
1011
+ source_command = source["command"] || source[:command]
1012
+ source_preset = source["preset"] || source[:preset]
1013
+ files << source_file if source_file
1014
+ commands << source_command if source_command
1015
+ presets << source_preset if source_preset
1016
+ when String
1017
+ files << source
1018
+ end
1019
+ end
1020
+
1021
+ normalized["files"] = files.compact.uniq if files.any?
1022
+ normalized["commands"] = commands.compact.uniq if commands.any?
1023
+ normalized["presets"] = presets.compact.uniq if presets.any?
1024
+ normalized.delete("sources")
1025
+ normalized.delete(:sources)
1026
+ normalized
1027
+ end
1028
+
991
1029
  def format_bundle(bundle, format)
992
1030
  bundle.metadata[:raw_content_for_auto_format] = bundle.content
993
1031
 
@@ -1270,10 +1308,11 @@ module Ace
1270
1308
  return unless ranges.any?
1271
1309
 
1272
1310
  processed_diffs = []
1311
+ diff_paths = section_data[:paths] || section_data["paths"] || []
1273
1312
 
1274
1313
  ranges.each do |diff_range|
1275
- result = generate_diff_safe(diff_range)
1276
- processed_diffs << result.slice(:range, :output, :success, :error)
1314
+ result = generate_diff_safe(diff_range, paths: diff_paths)
1315
+ processed_diffs << result.slice(:range, :paths, :output, :success, :error)
1277
1316
 
1278
1317
  unless result[:success]
1279
1318
  bundle.metadata[:errors] ||= []
@@ -1372,17 +1411,21 @@ module Ace
1372
1411
  # Generate diff with ace-git and return standardized result hash
1373
1412
  # Handles GitError and ArgumentError with standardized error handling
1374
1413
  # @param diff_range [String] Git range to diff
1414
+ # @param paths [Array<String>] Optional git path filters
1375
1415
  # @return [Hash] Result with :range, :output, :success, and optional :error
1376
- def generate_diff_safe(diff_range)
1377
- diff_result = Ace::Git::Organisms::DiffOrchestrator.generate(ranges: [diff_range])
1416
+ def generate_diff_safe(diff_range, paths: [])
1417
+ normalized_paths = Array(paths).map(&:to_s).map(&:strip).reject(&:empty?).uniq
1418
+ diff_result = Ace::Git::Organisms::DiffOrchestrator.generate(ranges: [diff_range], paths: normalized_paths)
1378
1419
  {
1379
1420
  range: diff_range,
1421
+ paths: normalized_paths,
1380
1422
  output: diff_result.content,
1381
1423
  success: true
1382
1424
  }
1383
1425
  rescue Ace::Git::Error => e
1384
1426
  {
1385
1427
  range: diff_range,
1428
+ paths: Array(paths).map(&:to_s).map(&:strip).reject(&:empty?).uniq,
1386
1429
  output: "",
1387
1430
  success: false,
1388
1431
  error: e.message,
@@ -1391,6 +1434,7 @@ module Ace
1391
1434
  rescue ArgumentError => e
1392
1435
  {
1393
1436
  range: diff_range,
1437
+ paths: Array(paths).map(&:to_s).map(&:strip).reject(&:empty?).uniq,
1394
1438
  output: "",
1395
1439
  success: false,
1396
1440
  error: e.message,
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Ace
4
4
  module Bundle
5
- VERSION = '0.40.6'
5
+ VERSION = '0.43.5'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ace-bundle
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.40.6
4
+ version: 0.43.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michal Czyz
8
8
  bindir: exe
9
9
  cert_chain: []
10
- date: 2026-03-29 00:00:00.000000000 Z
10
+ date: 2026-04-20 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: ace-support-cli
@@ -124,6 +124,7 @@ files:
124
124
  - ".ace-defaults/bundle/presets/development.md"
125
125
  - ".ace-defaults/bundle/presets/documentation-review.md"
126
126
  - ".ace-defaults/bundle/presets/mixed-content-example.md"
127
+ - ".ace-defaults/bundle/presets/project-base.md"
127
128
  - ".ace-defaults/bundle/presets/project-context.md"
128
129
  - ".ace-defaults/bundle/presets/project.md"
129
130
  - ".ace-defaults/bundle/presets/section-example-simple.md"