Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
76 commits
Select commit Hold shift + click to select a range
bd001c3
test(task_scheduler): pin Communication env-builder equivalence in sh…
djl11 May 25, 2026
c9ba909
feat(computer): add solve_captcha primitive for reCAPTCHA v2 via Anti…
djl11 May 26, 2026
aaabf3d
chore(repo): tighten .gitignore for build artifacts and add AGENTS.md
djl11 May 26, 2026
bfe44c4
chore(github): add CODEOWNERS, PR/issue templates, dependabot, OSV sc…
djl11 May 26, 2026
351563a
chore(deps): bump 9 packages to clear Dependabot CVE alerts
djl11 May 26, 2026
39fe850
docs(env): document ANTICAPTCHA_KEY placeholder in .env.example
djl11 May 26, 2026
485a09c
ci: trigger workflows after Actions outage recovery (no code change)
djl11 May 26, 2026
75d3921
fix(ci): un-break discover_test_paths.py top-level recursion
djl11 May 26, 2026
61d2cf8
feat(captcha+web-session): event-based settle wait + storageStateName
djl11 May 26, 2026
24c952a
diag(ci): surface local.sh stdout/stderr on orchestra start failure
djl11 May 26, 2026
c19e6a8
diag(ci): dump api_key table + UNIFY_KEY length when orchestra starts
djl11 May 26, 2026
f7cc53f
docs: add CHANGELOG.md following Keep a Changelog format
djl11 May 26, 2026
4ff257c
chore: add .mailmap to consolidate contributor identities
djl11 May 26, 2026
c380080
ci: add CodeQL workflow for python, JS/TS, and Actions analysis
djl11 May 26, 2026
b942b5a
ci: add uv.lock check workflow to block stale-lockfile merges
djl11 May 26, 2026
f33c1e9
diag(ci): tail last 40 lines of orchestra-startup.log on orchestra-su…
djl11 May 26, 2026
a4b20dc
chore(precommit): add detect-secrets hook with initial baseline
djl11 May 26, 2026
34ddacd
docs: add VISION.md with explicit non-goals
djl11 May 26, 2026
f4d951a
docs(security): replace SECURITY.md with full trust-model document
djl11 May 26, 2026
3deb7ec
docs(contributing): add maintainers and area-familiarity sections
djl11 May 26, 2026
2377d89
ci: add stale-issue/PR triage workflow
djl11 May 26, 2026
bc4a2a6
chore(ci): revert verbose orchestra-start diag, keep failure-path dump
djl11 May 26, 2026
7e82923
fix(blacklist): delete from aggregation contexts to mirror create's d…
djl11 May 26, 2026
dd275f4
fix(ci): uv-lockfile-check needs sibling unify/unillm checkouts
djl11 May 26, 2026
65dc04d
docs(README): sharpen for developer ICP, surface superset positioning…
djl11 May 26, 2026
cff1743
fix(test_context_store): accept project= kwarg in monkeypatch mock
djl11 May 26, 2026
6b1f9bb
fix(conftest): make _check_orchestra_available tolerant of /v0-suffix…
djl11 May 26, 2026
11b129c
fix(task-scheduler): preserve offline agentic scheduled tasks
hmahmood24 May 26, 2026
75f19a9
fix(test_integration_status): provide required secret so register act…
djl11 May 27, 2026
b9e8430
fix(blacklist): query each context for its own log id (copies, not refs)
djl11 May 27, 2026
9930357
test(km): loosen test_refactor_simulated_km schema-vocab assertion
djl11 May 27, 2026
5c555f2
chore(codeowners): set Yusha + Haris as default reviewers
djl11 May 27, 2026
e3633cd
fix(contact_manager): 3 stale-test failures from matrix-bug-shielded …
djl11 May 27, 2026
5a59805
test(dashboard): seed Data/monthly_stats + Data/revenue contexts for …
djl11 May 27, 2026
803bb41
fix(guidance): point _functions_context() at Functions/Meta (post-fm-…
djl11 May 27, 2026
51b90d1
test(secret_manager): hand-off prompt via tempfile to avoid stdout lo…
djl11 May 27, 2026
369c10d
fix(test_image): typo in test kwarg (_parent_chat_context_cont → _par…
djl11 May 27, 2026
3151b00
test(common): align test_schema_hides_private_optionals with actual d…
djl11 May 27, 2026
3621bd8
fix(test_spending): pass agent_id (int) not assistant_id (str) to Ses…
djl11 May 27, 2026
c61182f
fix(test_cost_attribution): mock ready_for_brain explicitly
djl11 May 27, 2026
31f5248
fix(image_refs): forbid extra keys so orchestra schema enforcement ca…
djl11 May 27, 2026
a961aba
fix(test_fk): use synchronous=True on log_messages to avoid race with…
djl11 May 27, 2026
e005787
test(voice): widen subprocess-ready timeout + surface stdout/stderr o…
djl11 May 27, 2026
c41e15f
test(actions/files): broaden missing-file vocab for LLM phrasing drift
djl11 May 27, 2026
9d90a3f
test(actions/update_contacts): allow digit-only match for phone-numbe…
djl11 May 27, 2026
1b454f5
fix(function_manager): use 'uv sync --directory' to dodge unlinked-cw…
djl11 May 27, 2026
35dc696
fix(test_parallel_run): make sessions_created + log_files robust to d…
djl11 May 27, 2026
a2ea449
ci(file_manager): cache + pre-warm HF docling models to fix download …
djl11 May 27, 2026
03a2e9f
fix(tests): stop set -e from swallowing parse_test_args help/error exits
djl11 May 27, 2026
2d9c232
test(secret_manager): hand-off tool schemas via tempfile (same fix as…
djl11 May 27, 2026
9100131
fix(test_timezone): correct post-fix assertion for invalid-TZ no-op b…
djl11 May 27, 2026
d5d65e2
fix(dashboard): seed Data/* contexts inside the test's prefix, not gl…
djl11 May 27, 2026
91654b2
fix(guidance): point _functions_context() at Functions/Compositional,…
djl11 May 27, 2026
d7f0c78
test(transcript): add 'metadata' to _EXPECTED_FWD shorthand map
djl11 May 27, 2026
654ea73
ci(agent_service): install magnitude from monorepo root so turbo reso…
djl11 May 27, 2026
87fae7e
fix(test_memory): preserve original signature on spy_cm_update / spy_…
djl11 May 27, 2026
affb6d4
fix(conftest): stub task_scheduler.datetime.now to match prompt_helpe…
djl11 May 27, 2026
063330c
fix(test_tool_loop_limits): count only short_tool when verifying quot…
djl11 May 27, 2026
3821f6a
fix(test_persistent_worker): set LIVEKIT_URL so start_persistent_work…
djl11 May 27, 2026
7dee9db
fix(test_comms_manager): poll for ack instead of asserting synchronously
djl11 May 27, 2026
4a33f66
fix(test_proactive_speech): remove over-broad 'should be' completion-…
djl11 May 27, 2026
4fd5523
fix(function_manager): explicit 'uv venv' before 'uv sync' guarantees…
djl11 May 27, 2026
7a3126c
ci(agent_service): install bun so turbo can resolve magnitude's packa…
djl11 May 27, 2026
9a33fb2
test(actions/files): also accept passive 'cannot be accessed' and 'ou…
djl11 May 27, 2026
3730ed6
fix(test_conv_mgr): configure assistant email/number so send_email/se…
djl11 May 27, 2026
3f9f375
fix(actor): explicitly direct storage review to delete superseded fun…
djl11 May 27, 2026
4a5b7f8
fix(voice_prompt): mention credentials in app-integration Q&A
djl11 May 27, 2026
de0db76
fix(knowledge_manager): direct LLM to update_rows (not transform_colu…
djl11 May 27, 2026
be67b90
fix(test_files): autouse-set vm_ready + file_sync_complete for all fi…
djl11 May 27, 2026
e4fab25
fix(test_take_action): mark file env ready in find_and_action test
djl11 May 27, 2026
c606219
fix(contact_manager.simulated): allow update() in deterministic mode
djl11 May 27, 2026
2af1f0b
fix(test_conv_mgr): enable USER_DESKTOP_CONTROL feature in CM tests
djl11 May 27, 2026
976f0da
fix(knowledge_manager): remove undefined {ask_fname} in update prompt…
djl11 May 27, 2026
4ed113f
fix(actor_prompt): explicit anti-pattern for single-primitive execute…
djl11 May 27, 2026
1b9190a
fix(function_manager): pass explicit .venv path + verify creation + l…
djl11 May 27, 2026
aa8a0b1
ci(file_manager): broaden HF cache gate from managers/ to all of file…
djl11 May 27, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -24,3 +24,11 @@ UNITY_VALIDATE_LLM_PROVIDERS=true

# Cache LLM responses locally. First run hits the provider; later runs replay.
UNILLM_CACHE=true

# Optional AntiCaptcha API key (consumed by agent-service's
# /captcha/solve handler — see agent-service/README.md). Required only
# if any caller invokes the WebSessionHandle.solve_captcha primitive.
# Sign up + deposit at https://anti-captcha.com. Without this set, the
# handler returns 503 anticaptcha_key_missing and callers fall back to
# their own non-CAPTCHA path.
ANTICAPTCHA_KEY=
23 changes: 23 additions & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# CODEOWNERS for unifyai/unity
#
# GitHub uses LAST-MATCH-WINS semantics. The per-path overrides below
# flag security-sensitive paths in PR descriptions; the reviewer set
# remains the default pair (the two founding engineers).
#
# Either approval satisfies branch protection. GitHub auto-excludes
# the PR author from the request list, so when one of them opens a
# PR the other becomes the implicit required reviewer.

# Default reviewers — the two founding engineers.
* @YushaArif99 @hmahmood24

# Security-sensitive config — flagged so it shows up in PR descriptions.
/.github/CODEOWNERS @YushaArif99 @hmahmood24
/.github/dependabot.yml @YushaArif99 @hmahmood24
/.github/workflows/ @YushaArif99 @hmahmood24
/SECURITY.md @YushaArif99 @hmahmood24
/AGENTS.md @YushaArif99 @hmahmood24
/ARCHITECTURE.md @YushaArif99 @hmahmood24

# Secret manager is the highest-blast-radius surface in the codebase.
/unity/secret_manager/ @YushaArif99 @hmahmood24
123 changes: 123 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
name: "🐛 Bug report"
description: Something is broken, crashing, or behaving incorrectly.
title: "[Bug]: "
labels: ["bug"]
body:
- type: markdown
attributes:
value: |
Thanks for taking the time to file a bug report.

Before submitting:
- Search [existing issues](https://github.com/unifyai/unity/issues) to avoid duplicates.
- Try `unity update` and confirm the bug still reproduces.
- If this is install-related, run `unity doctor` and include its output below.

- type: textarea
id: description
attributes:
label: What's wrong?
description: A clear description of the bug. Include error messages, tracebacks, or screenshots if relevant.
placeholder: |
What happened? What did you expect to happen instead?
validations:
required: true

- type: textarea
id: reproduction
attributes:
label: Steps to reproduce
description: Minimal steps to trigger the bug. The more specific, the faster we can fix it.
placeholder: |
1. `unity` from a fresh terminal
2. Send the message "..."
3. Observe ...
validations:
required: true

- type: textarea
id: expected
attributes:
label: Expected behavior
validations:
required: true

- type: textarea
id: actual
attributes:
label: Actual behavior
description: Include the full error output if available.
validations:
required: true

- type: dropdown
id: surface
attributes:
label: Affected surface
multiple: true
options:
- CLI (`unity`)
- Voice (`unity --live-voice`)
- Installer / setup (`scripts/install.sh`, `unity setup`, `unity doctor`)
- Local Orchestra (Docker / Postgres)
- Tests (`tests/parallel_run.sh`)
- A specific state manager (Contact / Knowledge / Task / Transcript / Guidance / Function / File / Image / Web / Secret / Blacklist / Data)
- Actor / CodeAct execution
- ConversationManager / steering / interjection
- Event bus / observability
- Gateway / external comms
- Other (specify below)
validations:
required: true

- type: input
id: os
attributes:
label: Operating system
placeholder: macOS 15.2 / Ubuntu 24.04 / Windows 11 WSL2
validations:
required: true

- type: input
id: python
attributes:
label: Python version
description: Output of `.venv/bin/python --version`
placeholder: "3.12.7"

- type: input
id: unity-commit
attributes:
label: Unity commit
description: Output of `git rev-parse --short HEAD` in the unity repo.
placeholder: "aaabf3d4"

- type: textarea
id: doctor
attributes:
label: "`unity doctor` output (recommended)"
description: |
Paste the full output of `unity doctor`. This catches the majority of install / environment bugs without back-and-forth.
render: shell

- type: textarea
id: logs
attributes:
label: Additional logs / traceback
description: |
Relevant log lines from `logs/unity/`, `logs/orchestra/`, or pytest output if applicable.
render: shell

- type: textarea
id: root-cause
attributes:
label: Root-cause analysis (optional)
description: |
If you've dug in, share file paths, line numbers, and snippets. This dramatically speeds up fixes.

- type: checkboxes
id: pr-ready
attributes:
label: Are you willing to submit a PR?
options:
- label: I'd like to fix this myself and submit a PR
14 changes: 14 additions & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
blank_issues_enabled: true
contact_links:
- name: 💬 Discord
url: https://discord.com/invite/sXyFF8tDtm
about: For quick questions, install help, and community discussion.
- name: 📖 Architecture overview
url: https://github.com/unifyai/unity/blob/main/ARCHITECTURE.md
about: How Unity is designed — read this before opening a design-question issue.
- name: 🤝 Contributing guide
url: https://github.com/unifyai/unity/blob/main/CONTRIBUTING.md
about: How to set up the dev environment and submit a PR.
- name: 🧠 Agent conventions (AGENTS.md)
url: https://github.com/unifyai/unity/blob/main/AGENTS.md
about: Coding standards, test philosophy, and git workflow.
74 changes: 74 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
name: "✨ Feature request"
description: Suggest a new capability, manager, primitive, or improvement.
title: "[Feature]: "
labels: ["enhancement"]
body:
- type: markdown
attributes:
value: |
Before submitting:
- Search [existing issues](https://github.com/unifyai/unity/issues) — someone may have proposed this already.
- For new procedural how-tos or executable functions for *your* assistant, consider that `GuidanceManager` and `FunctionManager` are designed to absorb those at runtime, no code change required. Feature requests in this repo are for changes to the runtime itself.
- See [`ARCHITECTURE.md`](https://github.com/unifyai/unity/blob/main/ARCHITECTURE.md) for how the manager / primitive boundary works.

- type: textarea
id: problem
attributes:
label: Problem or use case
description: What are you trying to do that you can't today? What's the user-facing pain?
validations:
required: true

- type: textarea
id: solution
attributes:
label: Proposed solution
description: |
How do you think this should work? Be as concrete as you can — manager API surface, primitive signature, CLI flag, config key.
validations:
required: true

- type: textarea
id: alternatives
attributes:
label: Alternatives considered
description: What other shapes did you consider? Why is the proposed one better?

- type: dropdown
id: scope
attributes:
label: Scope
options:
- New tool inside an existing manager
- New manager (significant — usually needs design discussion first)
- New primitive exposed to the Actor
- CLI / setup improvement
- Voice / fast-brain improvement
- Steering / async-tool-loop infrastructure
- Observability / event bus
- Tests / test infra
- Documentation
- Other
validations:
required: true

- type: dropdown
id: breaking
attributes:
label: Is this a breaking change?
description: Unity has a zero-backward-compatibility policy — breaking is fine, but flag it.
options:
- "No"
- "Yes — manager API change"
- "Yes — event payload / schema change"
- "Yes — env var / config change"
- "Yes — other"
validations:
required: true

- type: checkboxes
id: pr-ready
attributes:
label: Contribution
options:
- label: I'd like to implement this myself and submit a PR
76 changes: 76 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
<!--
Thanks for contributing to Unity! Please fill out the sections below.
For trivial changes (typo fixes, comment-only edits) you can shorten this template — just keep the Summary.

PRs land on `staging`, not `main`. See CONTRIBUTING.md.
-->

## Summary

<!-- 1–3 sentences: what problem does this PR solve, and why is this the right approach? -->



## Type of change

<!-- Check all that apply. -->

- [ ] Bug fix (non-breaking change that fixes incorrect behavior)
- [ ] Feature (non-breaking change that adds functionality)
- [ ] Refactor (no behavior change)
- [ ] Breaking change (API or data-model change — Unity has zero-backward-compat policy, but please call it out)
- [ ] Test-only (no source changes)
- [ ] Docs / chore / CI

## Areas touched

<!-- Check all that apply. Helps reviewers route. -->

- [ ] Actor / CodeAct
- [ ] ConversationManager / slow brain
- [ ] A specific state manager (Contact / Knowledge / Task / Transcript / Guidance / Function / File / Image / Web / Secret / Blacklist / Data / Memory)
- [ ] Async tool loop (`unity/common/_async_tool/`)
- [ ] Event bus / observability
- [ ] Gateway / external comms
- [ ] Tests / test infra (`tests/`, `conftest.py`, `parallel_run.sh`)
- [ ] CI / build / packaging

## Test plan

<!--
How did you verify this? Paste the command(s) you ran and the result.

The default expectation is to run the relevant directory:
tests/parallel_run.sh tests/<module>/

For infrastructure changes that are hard to reach via tests, a quick
verification script under tests/_verify_*.py is encouraged
(see .cursor/rules/surgical-verification-before-tests.mdc).
-->

```
tests/parallel_run.sh tests/...
```

- [ ] All relevant tests pass locally
- [ ] If this is a bug fix, I added a regression test (or explained why one isn't feasible)

## Behavior / migration notes

<!--
- Did this change a public manager API, primitive, or event payload?
- Are there schema/context changes in Orchestra that need a migration?
- Any new env vars or config flags? (Update `.env.advanced.example`.)
- If yes to any of the above, describe upgrade steps.
-->

None.

## Checklist

- [ ] PR is targeted at `staging` (not `main`)
- [ ] Followed conventional commit style (`feat(scope):`, `fix(scope):`, `refactor(scope):`, `chore(scope):`, etc.)
- [ ] No `try/except` added defensively — only around specific, recoverable errors
- [ ] No "new" / "updated" / "TODO from chat" temporal comments (see `.cursor/rules/no-temporal-comments.mdc`)
- [ ] No test-specific shortcuts in production code (see `.cursor/rules/no-test-info-in-production-code.mdc`)
- [ ] Updated `AGENTS.md` / `ARCHITECTURE.md` if I changed architectural conventions
58 changes: 58 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
# Dependabot configuration for unifyai/unity.
#
# Scoped to GitHub Actions and the agent-service npm workspace.
#
# We deliberately do NOT enable scheduled pip updates: Unity sits on top of
# three sibling repos (unify, unillm, orchestra-core) wired in via editable
# uv installs, and we move source-dep pins deliberately rather than on a
# cadence. CVE-driven security PRs against currently-pinned deps are still
# delivered via the repo-level "Dependabot security updates" setting
# (Settings → Code security → Dependabot security updates) — those are
# fire-on-CVE, not schedule-driven, and that's exactly when we want to
# move a pin.
#
# GitHub Actions and the agent-service npm package are the exceptions:
# - action pins should be kept fresh (most upstream bumps are themselves
# security fixes); Dependabot's grouped weekly PR is low-noise.
# - agent-service is leaf TypeScript with no Python coupling, so npm
# patch/minor bumps are safe to apply on a schedule.

version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
day: "monday"
open-pull-requests-limit: 5
labels:
- "dependencies"
- "github-actions"
commit-message:
prefix: "chore(actions)"
include: "scope"
groups:
# Batch routine action bumps into one PR per week to reduce noise.
# Security updates still open individually and bypass grouping.
actions-minor-patch:
update-types:
- "minor"
- "patch"

- package-ecosystem: "npm"
directory: "/agent-service"
schedule:
interval: "weekly"
day: "monday"
open-pull-requests-limit: 5
labels:
- "dependencies"
- "agent-service"
commit-message:
prefix: "chore(agent-service)"
include: "scope"
groups:
agent-service-minor-patch:
update-types:
- "minor"
- "patch"
Loading
Loading