Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
106 commits
Select commit Hold shift + click to select a range
696f2c5
docs(plan): rebase core CLI work on main
abmmhasan Sep 23, 2026
51f3e0b
test(cli): capture execution baseline
abmmhasan Sep 23, 2026
cededbd
ci(cli): run execution baseline contract
abmmhasan Sep 23, 2026
7493bd0
test(release): include execution baseline
abmmhasan Sep 23, 2026
e171820
docs(plan): close core CLI baseline batch
abmmhasan Sep 23, 2026
be6de3d
feat(cli): add shared container execution substrate
abmmhasan Sep 23, 2026
5759cb4
refactor(cli): load shared container executor
abmmhasan Sep 23, 2026
54986ff
test(cli): cover shared container executor
abmmhasan Sep 23, 2026
79932e1
ci(cli): validate shared container executor
abmmhasan Sep 23, 2026
d1f1ad2
test(release): include container executor contract
abmmhasan Sep 23, 2026
46411d3
docs(plan): update shared executor tracker
abmmhasan Sep 23, 2026
306c66c
refactor(cli): use shared container executor
abmmhasan Sep 23, 2026
edee0c8
test(cli): update contract for shared cli execution
abmmhasan Sep 23, 2026
8e78c90
docs(plan): update cli hardening tracker
abmmhasan Sep 23, 2026
c779bec
feat(core): add shared container workdir fallback
abmmhasan Sep 23, 2026
89c221d
refactor(core): centralize domain execution
abmmhasan Sep 23, 2026
d273ca0
test(core): cover centralized domain execution
abmmhasan Sep 23, 2026
fca53b5
test(core): cover shared workdir fallback
abmmhasan Sep 23, 2026
7669bef
test(core): isolate workdir fallback fixture
abmmhasan Sep 23, 2026
46135b8
docs(plan): update core hardening tracker
abmmhasan Sep 23, 2026
7c9af04
refactor(cli): unify stack and tools execution
abmmhasan Sep 23, 2026
3da37d4
test(cli): cover unified stack and tools execution
abmmhasan Sep 23, 2026
f851e7f
docs(plan): update adjacent execution tracker
abmmhasan Sep 23, 2026
445ce24
refactor(cli): standardize execution errors
abmmhasan Sep 23, 2026
ff8d3bd
fix(cli): standardize tools unavailable exit
abmmhasan Sep 23, 2026
37fb9bf
refactor(cli): make public routing explicit
abmmhasan Sep 23, 2026
bf737fe
test(cli): lock explicit routing and role help
abmmhasan Sep 23, 2026
0ef2f57
test(cli): cover execution usage and exit codes
abmmhasan Sep 23, 2026
ff06a67
docs(plan): update CLI routing tracker
abmmhasan Sep 23, 2026
f760db3
fix(cli): guard Docker exec paths under MSYS
abmmhasan Sep 23, 2026
091e447
test(cli): cover cross-platform execution semantics
abmmhasan Sep 23, 2026
fa12991
test(windows): cover shared Core CLI executor
abmmhasan Sep 23, 2026
e25c178
docs(plan): update cross-platform tracker
abmmhasan Sep 23, 2026
60a8de6
docs(cli): document unified execution surfaces
abmmhasan Sep 23, 2026
6a3f7b8
docs(cli): add execution surface examples
abmmhasan Sep 23, 2026
813b2a1
test(docs): lock unified execution reference
abmmhasan Sep 23, 2026
3d67eae
docs(plan): update release hardening tracker
abmmhasan Sep 23, 2026
5dfacb8
fix(cli): correct public command case syntax
abmmhasan Sep 23, 2026
60bb2e7
docs(plan): align core CLI hardening status
abmmhasan Sep 23, 2026
7849ee8
test(cli): satisfy ShellCheck fixture formatting
abmmhasan Sep 23, 2026
c8e73eb
test(cli): satisfy ShellCheck fixture formatting
abmmhasan Sep 23, 2026
98022c3
fix(core): resolve domains by discovered ownership
abmmhasan Sep 23, 2026
cbf252b
test(core): cover domain-like container targets
abmmhasan Sep 23, 2026
4a098ea
test(cli): align routing contract with valid case syntax
abmmhasan Sep 23, 2026
9a85ac7
docs(plan): record completed CLI and Windows review
abmmhasan Sep 23, 2026
d48f033
fix(cli): keep graphify on host command surface
abmmhasan Sep 23, 2026
6634fe6
test(cli): lock host graphify routing
abmmhasan Sep 23, 2026
dfe5535
chore(test): restore execution contract executable bit
abmmhasan Sep 23, 2026
6789c0a
chore(test): make container execution contract executable
abmmhasan Sep 23, 2026
3d2c92a
test(core): align discovered domain fixture
abmmhasan Sep 23, 2026
9eb3ec5
test(cli): align execution routing baseline
abmmhasan Sep 23, 2026
2c8babb
feat(cli): harden interactive execution semantics
abmmhasan Sep 23, 2026
f62c2e0
feat(cli): add explicit tools shell execution
abmmhasan Sep 23, 2026
dc85e88
test(cli): cover explicit interactive execution
abmmhasan Sep 23, 2026
a15db30
test(cli): cover TTY and shell-exec semantics
abmmhasan Sep 23, 2026
00c42fe
docs(cli): expose intentional tools shell execution
abmmhasan Sep 23, 2026
ff9db47
docs(cli): document shell and TTY boundaries
abmmhasan Sep 23, 2026
ae21a5d
docs(cli): clarify explicit shell execution
abmmhasan Sep 23, 2026
cccee2e
test(docs): lock shell execution boundaries
abmmhasan Sep 23, 2026
8c716c1
ci(cli): cover execution hardening branches
abmmhasan Sep 23, 2026
a79e895
fix(cli): preserve target errors before TTY checks
abmmhasan Sep 23, 2026
f761cfb
test(cli): restore TTY for interactive helper fixture
abmmhasan Sep 23, 2026
e045b1b
test(docs): require completed plans to be retired
abmmhasan Sep 23, 2026
444a407
docs: remove completed core CLI hardening plan
abmmhasan Sep 23, 2026
2b58200
docs(plan): add LDS shell unification tracker
abmmhasan Sep 23, 2026
3000daa
test(docs): track active LDS shell plan
abmmhasan Sep 23, 2026
e010e6f
feat(shell): add unified target context resolver
abmmhasan Sep 23, 2026
3bca549
test(shell): cover unified target resolution
abmmhasan Sep 23, 2026
a096e26
feat(shell): add grouped selector and unified execution command
abmmhasan Sep 23, 2026
a1e2ded
fix(shell): preserve documented target precedence
abmmhasan Sep 23, 2026
3065c74
test(shell): cover grouped selector and execution modes
abmmhasan Sep 23, 2026
c50bda1
feat(shell): expose unified shell command
abmmhasan Sep 23, 2026
525afe9
docs(shell): introduce unified execution navigator
abmmhasan Sep 23, 2026
4522128
docs(shell): define selector and resolution contract
abmmhasan Sep 23, 2026
8b08afe
test(shell): lock public routing and help
abmmhasan Sep 23, 2026
532cfc9
test(docs): lock unified shell UX contract
abmmhasan Sep 23, 2026
4e3f000
fix(shell): keep selector interactive and collision-safe
abmmhasan Sep 23, 2026
a850b0e
test(shell): align qualified tools selector
abmmhasan Sep 23, 2026
d53e9e8
refactor(shell): preserve caller shell error mode
abmmhasan Sep 23, 2026
107d3c4
docs(plan): record LDS shell batches 1 through 4
abmmhasan Sep 23, 2026
6ad7b5d
test(shell): model tools app directory probes directly
abmmhasan Sep 23, 2026
0772cc8
test(shell): stabilize app directory fixture matching
abmmhasan Sep 23, 2026
3e00c86
test(shell): let app fixture reach directory fallback
abmmhasan Sep 23, 2026
a4726fe
docs(shell): name grouped selector categories explicitly
abmmhasan Sep 23, 2026
1289e41
test(docs): align legacy shell compatibility syntax
abmmhasan Sep 23, 2026
84d8f31
refactor(shell): centralize shell context execution
abmmhasan Sep 23, 2026
d4e5a56
refactor(shell): consolidate legacy execution surfaces
abmmhasan Sep 23, 2026
cc47d86
fix(shell): make qualified container resolution exact
abmmhasan Sep 23, 2026
5ec77be
test(shell): harden ambiguity TTY and exit contracts
abmmhasan Sep 23, 2026
aa881d9
docs(shell): clarify real TTY requirement
abmmhasan Sep 23, 2026
6c9a51e
docs(plan): finalize LDS shell unification tracker
abmmhasan Sep 23, 2026
c7be1cb
test(docs): retire completed LDS shell plan
abmmhasan Sep 23, 2026
f1f4210
docs: remove completed LDS shell unification plan
abmmhasan Sep 23, 2026
da63e02
docs(shell): document unified execution architecture
abmmhasan Sep 24, 2026
e9c59fe
docs(shell): add execution navigator to quickstart
abmmhasan Sep 24, 2026
75c2bfe
docs(shell): make domain workflow use unified shell
abmmhasan Sep 24, 2026
0ce3f12
docs(shell): use canonical service execution flow
abmmhasan Sep 24, 2026
e11a252
docs(shell): use canonical Tools shell
abmmhasan Sep 24, 2026
bb4ba40
docs(shell): use canonical database service shell
abmmhasan Sep 24, 2026
6e2e4e1
docs(shell): document Tools qualifier and canonical guidance
abmmhasan Sep 24, 2026
1bda106
docs(shell): align execution selector terminology
abmmhasan Sep 24, 2026
6970253
docs(shell): align embedded help with selector qualifiers
abmmhasan Sep 24, 2026
68de1fa
test(docs): enforce canonical LDS shell documentation
abmmhasan Sep 24, 2026
540864a
docs(shell): clarify exact shell targets versus LLM alias
abmmhasan Sep 24, 2026
7c80b55
docs(shell): document exact provider shell targets
abmmhasan Sep 24, 2026
de5dd8f
test(docs): lock exact shell versus LLM alias guidance
abmmhasan Sep 24, 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
10 changes: 10 additions & 0 deletions .github/workflows/check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ on:
- "plan/**"
- "feature/**"
- "graphify/**"
- "core-cli/**"
- "lds-core-cli/**"
pull_request:
schedule:
# Related moving latest images refresh weekly; re-run the full compatibility
Expand Down Expand Up @@ -41,6 +43,14 @@ jobs:
- name: CLI contract
run: tests/cli-contract.sh

- name: Execution baseline contract
run: tests/execution-contract.sh

- name: Container execution substrate contract
run: tests/container-exec-contract.sh



- name: Environment contract
run: tests/env-contract.sh

Expand Down
30 changes: 30 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -343,6 +343,36 @@ lds clean --global --yes

That global mode can remove unrelated stopped containers, unused images/networks, build cache, and optionally volumes. `lds down --volumes --yes` is also destructive and should not be used for normal upgrades.

## Execution and shells

`lds shell` is the canonical execution navigator. With no arguments it presents a numbered catalog grouped as **Applications / Domains**, **Application Directories**, **Services**, **Containers**, and **Utilities**; choose by number, exact name, or a qualified selector.

```bash
# Interactive grouped selector.
lds shell

# Domain/application-aware shell and command.
lds shell project.localhost
lds shell project.localhost -- php artisan about

# Current-project service or exact container.
lds shell php84 -- php -v

# Direct server-tools /app child fallback.
lds shell billing

# Reserved Tools target.
lds shell tools -- jq --version

# Intentional shell syntax or interactive TUI.
lds shell tools --shell 'printf "%s\n" "hello world" | cat'
lds shell tools --interactive lazydocker
```

Explicit unqualified targets resolve in this order: discovered domain, reserved `tools`, exact current-project service, exact container, then an exact direct child under `server-tools:/app`. Qualified `domain:`, `app:`, `service:`, `container:`, and `utility:tools` selectors bypass collisions. Image names are not implicitly instantiated.

Normal commands preserve argv rather than being flattened into a shell string. Interactive shells/TUIs require a real TTY; piped/non-interactive commands do not force one. `core`, `cli`, `stack exec`, `exec`, and execution-oriented `tools` commands remain compatibility surfaces during migration. See `docs/reference/cli.rst` for target resolution and exit-code details.

## Ad-hoc Dockerfile runner

From a directory containing a Dockerfile:
Expand Down
17 changes: 17 additions & 0 deletions docs/concepts/architecture.rst
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,23 @@ Host Orchestration
``configuration/compose/``
Generated runtime Compose fragments discovered and merged into the effective stack.

Execution Navigation
--------------------

``lds shell`` is the canonical host-side execution and navigation surface. It resolves
discovered domains, direct application directories under ``server-tools:/app``, exact
current-project Compose services, exact Docker containers, and the trusted Tools target
into one normalized execution context.

Unqualified targets resolve deterministically in this order: discovered domain,
``tools``, exact Compose service, exact Docker container, then an exact direct child
under ``/app``. Qualified ``domain:``, ``app:``, ``service:``, ``container:``, and
``utility:tools`` selectors bypass collisions.

The compatibility commands ``core``, ``cli``, ``stack exec``, and the
execution-oriented ``tools`` subcommands delegate to the same shell-context execution
layer while retaining their intentionally narrower public contracts.

Core Services
-------------

Expand Down
5 changes: 4 additions & 1 deletion docs/guides/databases-and-clients.rst
Original file line number Diff line number Diff line change
Expand Up @@ -154,9 +154,12 @@ Check the whole stack with::
Inspect a service directly with::

lds logs postgres
lds stack exec postgres
lds shell service:postgres
lds restart postgres

The older ``lds stack exec postgres`` form remains available for service-only
compatibility.

Admin UIs
---------

Expand Down
29 changes: 19 additions & 10 deletions docs/guides/domain-setup.rst
Original file line number Diff line number Diff line change
Expand Up @@ -123,22 +123,31 @@ and Tools can include generated domain/service names.
The wildcard covers built-in convenience endpoints such as ``admin.localhost``,
``webmail.localhost``, and ``llm-ollama.localhost``.

Working in a Domain Container
-----------------------------
Working in a Domain or Application Context
------------------------------------------

Resolve a domain to its application/runtime container and open a shell::
Use the canonical shell navigator to resolve a discovered domain to its
application/runtime container and working directory::

lds core project.localhost
lds shell project.localhost

When no domain is supplied, ``lds core`` lists known domains and prompts on an
interactive terminal.
Run a command in that same resolved application context without losing argv boundaries::

A direct container name can also be supplied to ``lds core``.
lds shell project.localhost -- php artisan about

For a generic container shell/command flow use::
With no target, ``lds shell`` opens the grouped selector and includes discovered
domains, direct application directories under ``server-tools:/app``, services,
containers, and Tools.

lds cli <container>
lds cli <container> <command...>
Use qualified selectors when you want a specific target class or a name is ambiguous::

lds shell domain:project.localhost
lds shell app:project
lds shell service:php84
lds shell container:localdevstack-php84-1

``lds core`` and ``lds cli`` remain compatibility commands, but new workflows
should use ``lds shell``.

Diagnostics
-----------
Expand Down
10 changes: 10 additions & 0 deletions docs/guides/local-ai.rst
Original file line number Diff line number Diff line change
Expand Up @@ -391,5 +391,15 @@ Troubleshooting
Use ``lds logs llm-fastflow`` or ``lds logs llm-ollama`` only when you explicitly
want the provider-specific service identity.

For an interactive provider container through the canonical shell navigator, use the
exact active service identity::

lds shell service:llm-fastflow
lds shell service:llm-ollama

Only the active provider service is expected to exist. The logical ``llm`` alias belongs
to stack/service operations and is not rewritten by the exact ``service:`` shell
qualifier.

If FastFlow was expected but not selected, verify ``/dev/accel/accel0`` and the host
``amdxdna`` driver before forcing ``lds llm runtime npu``.
12 changes: 8 additions & 4 deletions docs/guides/operations-and-support.rst
Original file line number Diff line number Diff line change
Expand Up @@ -47,13 +47,17 @@ Status and Logs
``lds status`` delegates the richer status view to Tools. ``lds ps`` uses Compose
directly.

Execute a command in a service::
Execute a command in an exact current-project service through the canonical
execution surface::

lds stack exec nginx nginx -t
lds shell service:nginx -- nginx -t

Open an interactive shell when no command is supplied::
Open an interactive shell in that service::

lds stack exec nginx
lds shell service:nginx

``lds stack exec nginx ...`` and the top-level ``lds exec nginx ...`` alias remain
service-only compatibility forms.

Stack Diff
----------
Expand Down
6 changes: 3 additions & 3 deletions docs/guides/secrets-sops-age.rst
Original file line number Diff line number Diff line change
Expand Up @@ -35,12 +35,12 @@ The LocalDevStack command::
delegates directly to the Tools ``senv`` command inside the running ``server-tools``
container.

Use::
Use the canonical Tools shell target::

lds tools sh
lds shell tools

when you need to inspect the trusted Tools environment interactively before running a
manual SOPS/Age operation.
manual SOPS/Age operation. ``lds tools sh`` remains a compatibility form.

Trust Boundary
--------------
Expand Down
Loading
Loading