@supersoniks/concorde 4.9.9 → 4.9.92

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 (48) hide show
  1. package/build-infos.json +1 -1
  2. package/concorde-core.bundle.js +241 -241
  3. package/concorde-core.es.js +2931 -2851
  4. package/dist/concorde-core.bundle.js +241 -241
  5. package/dist/concorde-core.es.js +2931 -2851
  6. package/dist/js/core/decorators/api.js +146 -43
  7. package/dist/js/core/decorators/api.js.map +1 -1
  8. package/dist/js/decorators.js +4 -0
  9. package/dist/js/decorators.js.map +1 -1
  10. package/dist/types/core/decorators/api.d.ts +87 -60
  11. package/dist/types/core/decorators/api.d.ts.map +1 -1
  12. package/dist/types/decorators.d.ts +3 -1
  13. package/dist/types/decorators.d.ts.map +1 -1
  14. package/docs/assets/index-D2Q3JyQ6.css +1 -0
  15. package/docs/assets/{index-hElUgV9_.js → index-DURr6O71.js} +651 -736
  16. package/docs/crawl/docs/_decorators/get.html +89 -81
  17. package/docs/crawl/docs/_decorators/patch.html +43 -23
  18. package/docs/crawl/docs/_decorators/post.html +101 -72
  19. package/docs/crawl/docs/_decorators/put.html +44 -21
  20. package/docs/crawl/docs/_getting-started/ai-agents.html +45 -6
  21. package/docs/crawl/hubs/decorators.html +145 -70
  22. package/docs/crawl/hubs/remote-data.html +145 -70
  23. package/docs/index.html +2 -2
  24. package/docs/llms-full.txt +276 -147
  25. package/docs/llms.txt +4 -4
  26. package/docs/src/core/components/functional/queue/queue.md +0 -0
  27. package/docs/src/core/components/ui/button/button.md +0 -0
  28. package/docs/src/docs/_decorators/get.md +88 -80
  29. package/docs/src/docs/_decorators/patch.md +41 -25
  30. package/docs/src/docs/_decorators/post.md +104 -62
  31. package/docs/src/docs/_decorators/put.md +42 -24
  32. package/docs/src/docs/_getting-started/ai-agents.md +24 -4
  33. package/docs/src/docs/search/docs-search.json +182 -112
  34. package/docs/src/tsconfig.json +270 -267
  35. package/package.json +1 -1
  36. package/src/core/decorators/api.post.spec.ts +79 -1
  37. package/src/core/decorators/api.spec.ts +141 -1
  38. package/src/core/decorators/api.ts +330 -180
  39. package/src/decorators.ts +7 -0
  40. package/src/docs/_decorators/get.md +88 -80
  41. package/src/docs/_decorators/patch.md +41 -25
  42. package/src/docs/_decorators/post.md +104 -62
  43. package/src/docs/_decorators/put.md +42 -24
  44. package/src/docs/components/docs-demo-sources.ts +9 -14
  45. package/src/docs/example/decorators-demo-geo.ts +0 -21
  46. package/src/docs/example/decorators-demo-subscribe-publish-get-demos.ts +42 -133
  47. package/src/docs/search/docs-search.json +128 -133
  48. package/docs/assets/index-Bnp7gVaA.css +0 -1
@@ -4700,7 +4700,7 @@
4700
4700
  }
4701
4701
  },
4702
4702
  {
4703
- "search": "Loads data through API.getDetailed. The decorated property is ApiResult<T> | null: request, response (or null for dataProvider(...) resolution without HTTP), and typed result.\n",
4703
+ "search": "@get loads data and stores the result in an optional ApiResult<T> property.\nThe property is undefined until a result is available.\n",
4704
4704
  "files": {
4705
4705
  "docs/_decorators/get.md": {
4706
4706
  "title": "@get",
@@ -4715,14 +4715,14 @@
4715
4715
  }
4716
4716
  },
4717
4717
  {
4718
- "search": "Pass an Endpoint<T> as the first argument. Import get and ApiResult from @supersoniks/concorde/decorators, and Endpoint from @supersoniks/concorde/utils/endpoint.\n",
4718
+ "search": "The first argument is always an\nEndpoint<T>. API configuration is read\nfrom the HTML scope (serviceURL, token, etc.), so the component is usually\nplaced below an element that provides this configuration.\n",
4719
4719
  "files": {
4720
4720
  "docs/_decorators/get.md": {
4721
4721
  "title": "@get",
4722
4722
  "hashes": {
4723
- "get": {
4723
+ "minimal-usage": {
4724
4724
  "count": 1,
4725
- "title": "",
4725
+ "title": "Minimal usage",
4726
4726
  "type": "paragraph"
4727
4727
  }
4728
4728
  }
@@ -4730,14 +4730,44 @@
4730
4730
  }
4731
4731
  },
4732
4732
  {
4733
- "search": "${prop} on the endpoint or config key is resolved on the host. While a placeholder is null or undefined, no GET runs. Optional skipEmptyPlaceholder: true also blocks "" (empty string only). Details: Dynamic path placeholders.\n",
4733
+ "search": "Keep the decorator in a constant to access refetch(component). Refetch only\ntargets the instance passed as the argument, even before it has received a\nresult.\n",
4734
4734
  "files": {
4735
4735
  "docs/_decorators/get.md": {
4736
4736
  "title": "@get",
4737
4737
  "hashes": {
4738
- "dynamic-path": {
4738
+ "from-the-component": {
4739
4739
  "count": 1,
4740
- "title": "Dynamic path",
4740
+ "title": "From the component",
4741
+ "type": "paragraph"
4742
+ }
4743
+ }
4744
+ }
4745
+ }
4746
+ },
4747
+ {
4748
+ "search": "The refetch can decorate a local method. The default is after; if the\nmethod returns a Promise, the GET waits for its resolution.\n",
4749
+ "files": {
4750
+ "docs/_decorators/get.md": {
4751
+ "title": "@get",
4752
+ "hashes": {
4753
+ "from-a-method-decorator": {
4754
+ "count": 1,
4755
+ "title": "From a method decorator",
4756
+ "type": "paragraph"
4757
+ }
4758
+ }
4759
+ }
4760
+ }
4761
+ },
4762
+ {
4763
+ "search": "Use { when: "before" } when the GET must be scheduled before the method:\n",
4764
+ "files": {
4765
+ "docs/_decorators/get.md": {
4766
+ "title": "@get",
4767
+ "hashes": {
4768
+ "from-a-method-decorator": {
4769
+ "count": 1,
4770
+ "title": "From a method decorator",
4741
4771
  "type": "paragraph"
4742
4772
  }
4743
4773
  }
@@ -4745,7 +4775,22 @@
4745
4775
  }
4746
4776
  },
4747
4777
  {
4748
- "search": "Pass as the second argument (scoped config) or third (with a configuration key). Same shape as send decorators where applicable:\n",
4778
+ "search": "The method decorator adds an explicit trigger; changes to dynamic endpoint\nproperties and configuration publishers keep their existing automatic behavior.\n",
4779
+ "files": {
4780
+ "docs/_decorators/get.md": {
4781
+ "title": "@get",
4782
+ "hashes": {
4783
+ "from-a-method-decorator": {
4784
+ "count": 1,
4785
+ "title": "From a method decorator",
4786
+ "type": "paragraph"
4787
+ }
4788
+ }
4789
+ }
4790
+ }
4791
+ },
4792
+ {
4793
+ "search": "Options are the second argument, or the third argument when an API\nconfiguration key is provided.\n",
4749
4794
  "files": {
4750
4795
  "docs/_decorators/get.md": {
4751
4796
  "title": "@get",
@@ -4760,14 +4805,14 @@
4760
4805
  }
4761
4806
  },
4762
4807
  {
4763
- "search": "Same demo service as sonic-queue (/docs-mock-api/geo/). Publisher setup lives in decorators-demo-geo.ts and decorators-demo-subscribe-publish-get-demos.ts.\n",
4808
+ "search": "With a configuration key, use:\n",
4764
4809
  "files": {
4765
4810
  "docs/_decorators/get.md": {
4766
4811
  "title": "@get",
4767
4812
  "hashes": {
4768
- "minimal-example": {
4813
+ "options-getoptions": {
4769
4814
  "count": 1,
4770
- "title": "Minimal example",
4815
+ "title": "Options (`GetOptions`)",
4771
4816
  "type": "paragraph"
4772
4817
  }
4773
4818
  }
@@ -4775,14 +4820,24 @@
4775
4820
  }
4776
4821
  },
4777
4822
  {
4778
- "search": "Dynamic config and endpoint path (demo-api-get-configuration-key in doc sources):\n",
4823
+ "search": "See Dynamic path placeholders for\ndynamic path details.\n",
4779
4824
  "files": {
4780
4825
  "docs/_decorators/get.md": {
4781
4826
  "title": "@get",
4782
4827
  "hashes": {
4783
- "live-demos": {
4828
+ "when-the-get-runs-again": {
4784
4829
  "count": 1,
4785
- "title": "Live demos",
4830
+ "title": "When the GET runs again",
4831
+ "type": "paragraph"
4832
+ }
4833
+ }
4834
+ },
4835
+ "docs/_decorators/post.md": {
4836
+ "title": "@post",
4837
+ "hashes": {
4838
+ "options-postoptions": {
4839
+ "count": 1,
4840
+ "title": "Options (`PostOptions`)",
4786
4841
  "type": "paragraph"
4787
4842
  }
4788
4843
  }
@@ -4790,14 +4845,14 @@
4790
4845
  }
4791
4846
  },
4792
4847
  {
4793
- "search": "Scoped @get with @publish / @subscribe on the payload (see @publish and @subscribe) — wrap under an ancestor with serviceURL="/docs-mock-api/geo/":\n",
4848
+ "search": "See @post,\n@put, and\n@patch for write operations.\n",
4794
4849
  "files": {
4795
4850
  "docs/_decorators/get.md": {
4796
4851
  "title": "@get",
4797
4852
  "hashes": {
4798
- "live-demos": {
4853
+ "demos": {
4799
4854
  "count": 1,
4800
- "title": "Live demos",
4855
+ "title": "Demos",
4801
4856
  "type": "paragraph"
4802
4857
  }
4803
4858
  }
@@ -4805,14 +4860,14 @@
4805
4860
  }
4806
4861
  },
4807
4862
  {
4808
- "search": "Stale responses are ignored if the path or generation changed before the request finished.\n",
4863
+ "search": "External invalidation is currently available through triggerKey; it is kept\nout of the main usage examples.\n",
4809
4864
  "files": {
4810
4865
  "docs/_decorators/get.md": {
4811
4866
  "title": "@get",
4812
4867
  "hashes": {
4813
- "live-demos": {
4868
+ "advanced": {
4814
4869
  "count": 1,
4815
- "title": "Live demos",
4870
+ "title": "Advanced",
4816
4871
  "type": "paragraph"
4817
4872
  }
4818
4873
  }
@@ -4820,9 +4875,9 @@
4820
4875
  "docs/_decorators/post.md": {
4821
4876
  "title": "@post",
4822
4877
  "hashes": {
4823
- "live-demos": {
4878
+ "advanced": {
4824
4879
  "count": 1,
4825
- "title": "Live demos",
4880
+ "title": "Advanced",
4826
4881
  "type": "paragraph"
4827
4882
  }
4828
4883
  }
@@ -5730,7 +5785,7 @@
5730
5785
  }
5731
5786
  },
5732
5787
  {
5733
- "search": "Sends data through API.patchDetailed. Same model as @post: decorated property is ApiResult<T> | null (request, response, result).\n",
5788
+ "search": "@patch applies a partial update with the body from a publisher. It uses the\nsame model as @post:\nEndpoint<T>, DataProviderKey<B>, ApiResult<T>, options, and the\nsend(component) handle.\n",
5734
5789
  "files": {
5735
5790
  "docs/_decorators/patch.md": {
5736
5791
  "title": "@patch",
@@ -5745,14 +5800,39 @@
5745
5800
  }
5746
5801
  },
5747
5802
  {
5748
- "search": "Pass an Endpoint<T> and a DataProviderKey for the request body. Import patch and ApiResult from @supersoniks/concorde/decorators.\n",
5803
+ "search": "To run the operation again from the component:\n",
5749
5804
  "files": {
5750
5805
  "docs/_decorators/patch.md": {
5751
5806
  "title": "@patch",
5752
5807
  "hashes": {
5753
- "patch": {
5808
+ "minimal-usage": {
5754
5809
  "count": 1,
5755
- "title": "",
5810
+ "title": "Minimal usage",
5811
+ "type": "paragraph"
5812
+ }
5813
+ }
5814
+ },
5815
+ "docs/_decorators/put.md": {
5816
+ "title": "@put",
5817
+ "hashes": {
5818
+ "minimal-usage": {
5819
+ "count": 1,
5820
+ "title": "Minimal usage",
5821
+ "type": "paragraph"
5822
+ }
5823
+ }
5824
+ }
5825
+ }
5826
+ },
5827
+ {
5828
+ "search": "The PATCH is also sent automatically when the body mutates, unless\nautoPostOnBodyMutation: false is set. The available options are described in\n@post:\n",
5829
+ "files": {
5830
+ "docs/_decorators/patch.md": {
5831
+ "title": "@patch",
5832
+ "hashes": {
5833
+ "minimal-usage": {
5834
+ "count": 1,
5835
+ "title": "Minimal usage",
5756
5836
  "type": "paragraph"
5757
5837
  }
5758
5838
  }
@@ -5760,14 +5840,14 @@
5760
5840
  }
5761
5841
  },
5762
5842
  {
5763
- "search": "Same as @post / @get: scoped HTML.getApiConfiguration(host) or DataProviderKey<APIConfiguration> as third argument.\n",
5843
+ "search": "Pass explicit API configuration as the third argument:\n",
5764
5844
  "files": {
5765
5845
  "docs/_decorators/patch.md": {
5766
5846
  "title": "@patch",
5767
5847
  "hashes": {
5768
- "configuration": {
5848
+ "minimal-usage": {
5769
5849
  "count": 1,
5770
- "title": "Configuration",
5850
+ "title": "Minimal usage",
5771
5851
  "type": "paragraph"
5772
5852
  }
5773
5853
  }
@@ -5775,9 +5855,9 @@
5775
5855
  "docs/_decorators/put.md": {
5776
5856
  "title": "@put",
5777
5857
  "hashes": {
5778
- "configuration": {
5858
+ "minimal-usage": {
5779
5859
  "count": 1,
5780
- "title": "Configuration",
5860
+ "title": "Minimal usage",
5781
5861
  "type": "paragraph"
5782
5862
  }
5783
5863
  }
@@ -5785,24 +5865,29 @@
5785
5865
  }
5786
5866
  },
5787
5867
  {
5788
- "search": "Same shape as PostOptions on @post (ApiSendOptions): refetchEveryMs, skipIfBodyMissing, autoPostOnBodyMutation, triggerKey, skipEmptyPlaceholder. See Dynamic path placeholders for ${sessionId} and empty-string behaviour.\n",
5868
+ "search": "@post",
5789
5869
  "files": {
5790
- "docs/_decorators/patch.md": {
5791
- "title": "@patch",
5870
+ "docs/_decorators/post.md": {
5871
+ "title": "@post",
5792
5872
  "hashes": {
5793
- "options-patchoptions": {
5873
+ "post": {
5794
5874
  "count": 1,
5795
- "title": "Options (`PatchOptions`)",
5796
- "type": "paragraph"
5875
+ "title": "",
5876
+ "type": "page"
5797
5877
  }
5798
5878
  }
5799
- },
5800
- "docs/_decorators/put.md": {
5801
- "title": "@put",
5879
+ }
5880
+ }
5881
+ },
5882
+ {
5883
+ "search": "@post sends the contents of a publisher and stores the response in an\noptional ApiResult<T> property. The property is undefined until a result\nis available.\n",
5884
+ "files": {
5885
+ "docs/_decorators/post.md": {
5886
+ "title": "@post",
5802
5887
  "hashes": {
5803
- "options-putoptions": {
5888
+ "post": {
5804
5889
  "count": 1,
5805
- "title": "Options (`PutOptions`)",
5890
+ "title": "",
5806
5891
  "type": "paragraph"
5807
5892
  }
5808
5893
  }
@@ -5810,14 +5895,14 @@
5810
5895
  }
5811
5896
  },
5812
5897
  {
5813
- "search": "@patch(\n new Endpoint<Resource, { resourceId: string }>("resources/${resourceId}"),\n patchBodyKey,\n { skipEmptyPlaceholder: true },\n)\n@state()\npayload?: ApiResult<Resource> | null;\n \n\n",
5898
+ "search": "Pass an Endpoint<T> and a DataProviderKey<B> for the request body.\n",
5814
5899
  "files": {
5815
- "docs/_decorators/patch.md": {
5816
- "title": "@patch",
5900
+ "docs/_decorators/post.md": {
5901
+ "title": "@post",
5817
5902
  "hashes": {
5818
- "example": {
5903
+ "minimal-usage": {
5819
5904
  "count": 1,
5820
- "title": "Example",
5905
+ "title": "Minimal usage",
5821
5906
  "type": "paragraph"
5822
5907
  }
5823
5908
  }
@@ -5825,29 +5910,29 @@
5825
5910
  }
5826
5911
  },
5827
5912
  {
5828
- "search": "@post",
5913
+ "search": "The current body is read from userBodyKey. By default, the POST is sent when\nthe component connects and after each body mutation. Mutations in the same\nframe are coalesced into one request.\n",
5829
5914
  "files": {
5830
5915
  "docs/_decorators/post.md": {
5831
5916
  "title": "@post",
5832
5917
  "hashes": {
5833
- "post": {
5918
+ "minimal-usage": {
5834
5919
  "count": 1,
5835
- "title": "",
5836
- "type": "page"
5920
+ "title": "Minimal usage",
5921
+ "type": "paragraph"
5837
5922
  }
5838
5923
  }
5839
5924
  }
5840
5925
  }
5841
5926
  },
5842
5927
  {
5843
- "search": "Sends data through API.postDetailed. The decorated property is ApiResult<T> | null: request, response, and typed result.\n",
5928
+ "search": "API configuration is read from the HTML scope, as with\n@get.\n",
5844
5929
  "files": {
5845
5930
  "docs/_decorators/post.md": {
5846
5931
  "title": "@post",
5847
5932
  "hashes": {
5848
- "post": {
5933
+ "minimal-usage": {
5849
5934
  "count": 1,
5850
- "title": "",
5935
+ "title": "Minimal usage",
5851
5936
  "type": "paragraph"
5852
5937
  }
5853
5938
  }
@@ -5855,14 +5940,14 @@
5855
5940
  }
5856
5941
  },
5857
5942
  {
5858
- "search": "Pass an Endpoint<T> as the first argument and a DataProviderKey for the request body as the second. Import post and ApiResult from @supersoniks/concorde/decorators, and Endpoint from @supersoniks/concorde/utils/endpoint.\n",
5943
+ "search": "Keep the decorator to access send(component). The body is read again when the\noperation runs.\n",
5859
5944
  "files": {
5860
5945
  "docs/_decorators/post.md": {
5861
5946
  "title": "@post",
5862
5947
  "hashes": {
5863
- "post": {
5948
+ "from-the-component": {
5864
5949
  "count": 1,
5865
- "title": "",
5950
+ "title": "From the component",
5866
5951
  "type": "paragraph"
5867
5952
  }
5868
5953
  }
@@ -5870,14 +5955,14 @@
5870
5955
  }
5871
5956
  },
5872
5957
  {
5873
- "search": "Same as @get: scoped HTML.getApiConfiguration(host) by default, or DataProviderKey<APIConfiguration> as third argument. See API configuration for mock demos.\n",
5958
+ "search": "send() is useful for “Save” or “Retry” buttons. It can repeat an operation\nwith side effects.\n",
5874
5959
  "files": {
5875
5960
  "docs/_decorators/post.md": {
5876
5961
  "title": "@post",
5877
5962
  "hashes": {
5878
- "configuration": {
5963
+ "from-the-component": {
5879
5964
  "count": 1,
5880
- "title": "Configuration",
5965
+ "title": "From the component",
5881
5966
  "type": "paragraph"
5882
5967
  }
5883
5968
  }
@@ -5885,14 +5970,14 @@
5885
5970
  }
5886
5971
  },
5887
5972
  {
5888
- "search": "Mock service: POST /docs-mock-api/api/register (same route as sonic-submit demos). Publisher setup lives in decorators-demo-post.ts.\n",
5973
+ "search": "The send action can decorate a local method. It runs after the method by\ndefault and waits for an eventual Promise to resolve:\n",
5889
5974
  "files": {
5890
5975
  "docs/_decorators/post.md": {
5891
5976
  "title": "@post",
5892
5977
  "hashes": {
5893
- "minimal-example": {
5978
+ "from-a-method-decorator": {
5894
5979
  "count": 1,
5895
- "title": "Minimal example",
5980
+ "title": "From a method decorator",
5896
5981
  "type": "paragraph"
5897
5982
  }
5898
5983
  }
@@ -5900,14 +5985,14 @@
5900
5985
  }
5901
5986
  },
5902
5987
  {
5903
- "search": "@post(\n new Endpoint<SyncResponse, { sessionId: string }>("sessions/${sessionId}/sync"),\n syncRequest,\n { triggerKey: syncTrigger },\n)\n@state()\npayload?: ApiResult<SyncResponse> | null;\n \n\n",
5988
+ "search": "Use { when: "before" } when the body must be sent before the method runs:\n",
5904
5989
  "files": {
5905
5990
  "docs/_decorators/post.md": {
5906
5991
  "title": "@post",
5907
5992
  "hashes": {
5908
- "minimal-example": {
5993
+ "from-a-method-decorator": {
5909
5994
  "count": 1,
5910
- "title": "Minimal example",
5995
+ "title": "From a method decorator",
5911
5996
  "type": "paragraph"
5912
5997
  }
5913
5998
  }
@@ -5915,14 +6000,14 @@
5915
6000
  }
5916
6001
  },
5917
6002
  {
5918
- "search": "Dynamic endpoint path — changing sessionId on the host re-runs the POST (POST /docs-mock-api/api/sessions/{id}/sync):\n",
6003
+ "search": "The method decorator adds an explicit send. If the method also mutates the body\npublisher, set autoPostOnBodyMutation: false when the decorated method must\nbe the only trigger.\n",
5919
6004
  "files": {
5920
6005
  "docs/_decorators/post.md": {
5921
6006
  "title": "@post",
5922
6007
  "hashes": {
5923
- "live-demos": {
6008
+ "from-a-method-decorator": {
5924
6009
  "count": 1,
5925
- "title": "Live demos",
6010
+ "title": "From a method decorator",
5926
6011
  "type": "paragraph"
5927
6012
  }
5928
6013
  }
@@ -5930,14 +6015,14 @@
5930
6015
  }
5931
6016
  },
5932
6017
  {
5933
- "search": "@post + @publish on the same property (see @publish):\n",
6018
+ "search": "Options are the third argument, or the fourth argument when a configuration key\nis provided.\n",
5934
6019
  "files": {
5935
6020
  "docs/_decorators/post.md": {
5936
6021
  "title": "@post",
5937
6022
  "hashes": {
5938
- "live-demos": {
6023
+ "options-postoptions": {
5939
6024
  "count": 1,
5940
- "title": "Live demos",
6025
+ "title": "Options (`PostOptions`)",
5941
6026
  "type": "paragraph"
5942
6027
  }
5943
6028
  }
@@ -5945,14 +6030,14 @@
5945
6030
  }
5946
6031
  },
5947
6032
  {
5948
- "search": "Note: plusieurs composants @post sur la même page qui partagent le même bodyKey enverront chacun une requête à chaque mutation du body — utiliser une clé par composant (voir les deux démos live ci-dessus).\n",
6033
+ "search": "With a configuration key:\n",
5949
6034
  "files": {
5950
6035
  "docs/_decorators/post.md": {
5951
6036
  "title": "@post",
5952
6037
  "hashes": {
5953
- "live-demos": {
6038
+ "options-postoptions": {
5954
6039
  "count": 1,
5955
- "title": "Live demos",
6040
+ "title": "Options (`PostOptions`)",
5956
6041
  "type": "paragraph"
5957
6042
  }
5958
6043
  }
@@ -5960,14 +6045,14 @@
5960
6045
  }
5961
6046
  },
5962
6047
  {
5963
- "search": "Path placeholders (${sessionId}, …): Dynamic path placeholders.\n",
6048
+ "search": "See @put and\n@patch: they use the same model with a\ndifferent HTTP method.\n",
5964
6049
  "files": {
5965
6050
  "docs/_decorators/post.md": {
5966
6051
  "title": "@post",
5967
6052
  "hashes": {
5968
- "live-demos": {
6053
+ "demos": {
5969
6054
  "count": 1,
5970
- "title": "Live demos",
6055
+ "title": "Demos",
5971
6056
  "type": "paragraph"
5972
6057
  }
5973
6058
  }
@@ -6050,7 +6135,7 @@
6050
6135
  }
6051
6136
  },
6052
6137
  {
6053
- "search": "Sends data through API.putDetailed. Same model as @post: decorated property is ApiResult<T> | null (request, response, result).\n",
6138
+ "search": "@put replaces a resource with the body from a publisher. It uses exactly the\nsame model as @post:\nEndpoint<T>, DataProviderKey<B>, ApiResult<T>, options, and the\nsend(component) handle.\n",
6054
6139
  "files": {
6055
6140
  "docs/_decorators/put.md": {
6056
6141
  "title": "@put",
@@ -6065,44 +6150,14 @@
6065
6150
  }
6066
6151
  },
6067
6152
  {
6068
- "search": "Pass an Endpoint<T> and a DataProviderKey for the request body. Import put and ApiResult from @supersoniks/concorde/decorators.\n",
6153
+ "search": "The PUT is also sent automatically when the body mutates, unless\nautoPostOnBodyMutation: false is set. See\n@post for the option details:\n",
6069
6154
  "files": {
6070
6155
  "docs/_decorators/put.md": {
6071
6156
  "title": "@put",
6072
6157
  "hashes": {
6073
- "put": {
6158
+ "minimal-usage": {
6074
6159
  "count": 1,
6075
- "title": "",
6076
- "type": "paragraph"
6077
- }
6078
- }
6079
- }
6080
- }
6081
- },
6082
- {
6083
- "search": "@put(new Endpoint<Resource, { resourceId: string }>("resources/${resourceId}"), bodyKey)\n@state()\npayload?: ApiResult<Resource> | null;\n \n\n",
6084
- "files": {
6085
- "docs/_decorators/put.md": {
6086
- "title": "@put",
6087
- "hashes": {
6088
- "example": {
6089
- "count": 1,
6090
- "title": "Example",
6091
- "type": "paragraph"
6092
- }
6093
- }
6094
- }
6095
- }
6096
- },
6097
- {
6098
- "search": "Changing resourceId on the host re-runs the PUT when the path becomes ready — see Dynamic path placeholders.\n",
6099
- "files": {
6100
- "docs/_decorators/put.md": {
6101
- "title": "@put",
6102
- "hashes": {
6103
- "example": {
6104
- "count": 1,
6105
- "title": "Example",
6160
+ "title": "Minimal usage",
6106
6161
  "type": "paragraph"
6107
6162
  }
6108
6163
  }
@@ -6874,6 +6929,21 @@
6874
6929
  }
6875
6930
  }
6876
6931
  },
6932
+ {
6933
+ "search": "Everything after <!-- concorde-ai --> is replaced on each ai-init run (idempotent). Do not paste a full copy of the Concorde guide above the marker — put project-specific notes in AGENTS.concorde.md (overlay). If the preamble duplicates package AGENTS.md, ai-init slims or drops it and prints a warning. Legacy filenames AGENTS.overlay.md / AGENTS.starter.md are still accepted with a deprecation warning.\n",
6934
+ "files": {
6935
+ "docs/_getting-started/ai-agents.md": {
6936
+ "title": "AI agents (skills & AGENTS.md)",
6937
+ "hashes": {
6938
+ "agentsmd-policy-non-invasive": {
6939
+ "count": 1,
6940
+ "title": "`AGENTS.md` policy (non-invasive)",
6941
+ "type": "paragraph"
6942
+ }
6943
+ }
6944
+ }
6945
+ }
6946
+ },
6877
6947
  {
6878
6948
  "search": "Source files in the npm package: node_modules/@supersoniks/concorde/ai/ (see also ai/README.md in the Concorde repository).\n",
6879
6949
  "files": {