Commit Graph

386 Commits

Author SHA1 Message Date
Isaac Visintainer
e807e6c223 paginated frontend api 2020-01-21 10:49:35 -08:00
Isaac Visintainer
dcec0315ae sending updates to subscribers 2020-01-21 10:49:35 -08:00
Isaac Visintainer
2836cf3f08 reworked file ingestion to not use ford 2020-01-21 10:49:35 -08:00
Fang
00a4c91f92
link: encode urls in paths in base64 2020-01-07 17:38:39 -08:00
Fang
879e45c377
Merge branch 'master' into m/uplink 2020-01-07 13:30:55 -08:00
Jared Tobin
01afc2a143
Merge branch 'm/gall-gift-paths' (#2134)
* origin/m/gall-gift-paths:
  gall: (list path) in %fact and %kick

Signed-off-by: Jared Tobin <jared@tlon.io>
2020-01-07 04:17:32 +08:00
Fang
fcf1846b6f
various: remove trailing whitespace 2020-01-03 22:06:42 +01:00
Fang
ae8a57ca25
gall: (list path) in %fact and %kick
Instead of providing a (unit path), allows for (list path), which better
supports the "update to path and subpath cases".

For example, if /things wants updates about everything, and
/things/specific wants updates about the specific thing, they'll both
need to receive a %fact when the specific thing changes.
Previously, these would have been two separate moves. Now, gall handles
the multi-targeting for you.
2019-12-23 13:37:32 +01:00
Fang
ea7c1db61c
various: use =/ in place of =+ ^-
Also faceless =; where appropriate.
2019-12-21 14:29:14 -03:30
Fang
9f18877c0a
link: rudimentary comments
As of yet largely untested. The "urls in paths" might bring trouble.
2019-12-21 00:52:09 +01:00
Fang
8a0baed192
link: %add -> %save 2019-12-20 15:58:32 +01:00
Jared Tobin
eee651042c
Merge branch 'm/eth-sending' (#2094)
* origin/m/eth-sending:
  eth-sender: do proper nonce reading
  zuse: implement eth rlp decoding
  zuse: correctly encode leading zeroes in rlp data
  zuse: lightly restructure encode:rlp:ethereum
  static gall: update send-txs
  ethio: implement +request-batch-rpc-loose

Signed-off-by: Jared Tobin <jared@tlon.io>
2019-12-19 11:20:06 -03:30
Fang
b6f97da2d7
link-server-hook: expose submissions json endpoint 2019-12-18 16:19:03 +01:00
Philip Monk
b14606660a
goad: recompile apps after changes to /sys
OTAs commonly end up in an inconsistent state if apps depend on changes
to /sys.  For example, the %sift changes break on OTA because %spider
needs to be reloaded so that it's aware of the new thread type.  This
adds a %goad app, which reloads all apps after every change to /sys.

Getting this to start OTA is nontrivial, but this pattern should work
for apps in the future.  The changes to clock shouldn't generally be
necessary; they are only necessary here because we can't rely on hood to
start goad, since hood fails to compile if it's run before zuse is
reloaded.  Once goad is active, this will cease to be a problem.
2019-12-13 17:14:51 -08:00
Fang
b482249712
ethio: implement +request-batch-rpc-loose
Produces batch request results regardless of node-side error.

Reimplements +request-batch-rpc-strict using it.
2019-12-13 23:30:52 +01:00
Jared Tobin
aff97bf150
Merge branch 'm/eth-apps' (#2084)
* origin/m/eth-apps:
  claz: clean up head of app file
  static gall: update claz
  ethio: add +get-next-nonce
  zuse: update %eth-get-transaction-count
  zuse: include all relevant azimuth addresses
  ethio: implement +batch-read-contract-strict
  ethio: fail request-rpc more properly
  static gall: update gaze

Signed-off-by: Jared Tobin <jared@tlon.io>
2019-12-12 16:27:04 +08:00
Jared Tobin
9ba4505086
Merge branch 'ames-sift' (#2081)
* ames-sift:
  ames: refactor +load
  ames: +send-blob better ship printing
  hood: |ames-sift generator to trace by ship
  ames: add %sift  to trace by ship

Signed-off-by: Jared Tobin <jared@tlon.io>
2019-12-12 16:06:32 +08:00
Ted Blackman
c500e03b81
hood: |ames-sift generator to trace by ship 2019-12-12 15:55:36 +08:00
Fang
25d390d6b1
server: properly defined request-line type 2019-12-11 20:49:49 +01:00
Fang
a95449cc64
link: social bookmarking core implementation
Stores URLs and their titles for the local ship. Can listen to
"submissions" on foreign ships.

Has a primitive perspective on groups, treating them as
always-interesting. Auto-subscribes to all ships in all groups.

Foreign communications untested.
2019-12-11 20:49:49 +01:00
Fang
fab9097110
static gall: update claz
Largely one-to-one port feature-wise.

Support for document polls was added.

Command preparation and verification got split out into
/ted/claz/prep-command, and got a dedicated +prep-result type to
facilitate future support for more complex preparation steps.
2019-12-11 17:32:33 +01:00
Fang
965529525b
ethio: add +get-next-nonce 2019-12-11 17:32:33 +01:00
Fang
9a708fb8f8
ethio: implement +batch-read-contract-strict
And re-implement +read-contract to use that under the hood.
2019-12-11 17:11:47 +01:00
Fang
abe92e289a
ethio: fail request-rpc more properly
strand-fail instead of crashing.
2019-12-11 17:11:47 +01:00
Jared Tobin
3f50a11e48
Merge branch 'philip/drum' (#2063)
* origin/philip/drum:
  drum: revert tang ordering change

Signed-off-by: Jared Tobin <jared@tlon.io>
2019-12-10 16:26:49 +08:00
Philip Monk
5ff9e04204
drum: revert tang ordering change
Turns out this wasn't a regression, it was intended behavior.  I
continue to believe it's the wrong behavior, but that will require a
longer discussion.
2019-12-09 11:47:48 -08:00
Jared Tobin
74c3ad619a
Merge branch 'decommission' (#2051)
* origin/decommission:
  ames: remove last remnants of |nuke

Signed-off-by: Jared Tobin <jared@tlon.io>
2019-12-07 17:02:55 +08:00
Jared Tobin
31f20c30c6
Merge branch 'philip/ew-printfs' (#2050)
* origin/philip/ew-printfs:
  eth-watcher: silence printfs

Signed-off-by: Jared Tobin <jared@tlon.io>
2019-12-07 17:01:01 +08:00
Jared Tobin
27b5ded1d2
Merge branch 'm/chat-eval' (#2009)
* m/chat-eval:
  chat: include .^ paths in its eval failure case
  chat: improve eval implementation

Signed-off-by: Jared Tobin <jared@tlon.io>
2019-12-07 16:48:42 +08:00
Joe Bryan
a0d2d41d0c ames: remove last remnants of |nuke 2019-12-06 11:46:55 -08:00
Philip Monk
2d9a043e6f
eth-watcher: silence printfs 2019-12-06 11:19:05 -08:00
Jared Tobin
0bad1401f0
Merge branch 'philip/drum-order' (#2035)
* philip/drum-order:
  drum: print tangs in order

Signed-off-by: Jared Tobin <jared@tlon.io>
2019-12-06 12:20:53 +08:00
Jared Tobin
3fc349d995
Merge branch 'philip/eth-watcher-silence' (#2022)
* philip/eth-watcher-silence:
  eth-watcher: be quieter about parse errors

Signed-off-by: Jared Tobin <jared@tlon.io>
2019-12-06 12:10:12 +08:00
Philip Monk
ddbfb53b28
drum: print tangs in order 2019-12-05 11:58:55 -08:00
Jared Tobin
2391090b56
Merge branch 'philip/boot-order' (#2023)
* philip/boot-order:
  drum: boot to dojo and start acme

Signed-off-by: Jared Tobin <jared@tlon.io>
2019-12-05 16:45:25 +08:00
Philip Monk
7d2f789696
drum: boot to dojo and start acme 2019-12-04 18:32:28 -08:00
Philip Monk
b51eda4f1e
eth-watcher: be quieter about parse errors 2019-12-04 17:58:00 -08:00
Liam Fitzgerald
bcd94868cb Merge branch 'master' into tab-complete-chat 2019-12-05 08:40:41 +10:00
Philip Monk
51f9b2e269
aqua: make faster so moon-az can finish 2019-12-03 23:53:42 -08:00
Philip Monk
702dd2c07a
verb: add +verb %bowl to print bowl on every event 2019-12-03 15:05:42 -08:00
Philip Monk
9fa772a342
clay: don't make |cancel require argument 2019-12-03 14:46:39 -08:00
Philip Monk
c90107659b
Merge remote-tracking branch 'origin/rc-ames-verb' into rc 2019-12-02 20:22:04 -08:00
Fang
bf6658c9ca
chat: include .^ paths in its eval failure case
Also updates the top-level message to avoid problematic terminology.
2019-12-03 01:20:34 +01:00
Ted Blackman
41e7e16689 |ames-verb generator to set verbosity 2019-12-02 18:54:01 -05:00
Fang
febe9470e6
chat: improve eval implementation
Previous implementation was doing double virtualization, which gave issues
around scries. By reimplementing with mint and mock, we get to catch all
possible failure cases and produce an appropriate output for each.
2019-12-03 00:29:19 +01:00
Philip Monk
0431c3c073
Merge remote-tracking branch 'origin/jam-cue-rock' into rc 2019-12-02 02:08:37 -08:00
Philip Monk
82c4895e32
helm: reset and reload in correct order 2019-11-30 21:54:54 -08:00
Philip Monk
689b829a1d
Merge remote-tracking branch 'origin/master' into rc 2019-11-30 21:54:36 -08:00
Philip Monk
c7c42225e2
Merge commit 'fbc81b59'; remote-tracking branch 'origin/mp-chat-redesign' into rc 2019-11-30 16:17:28 -08:00
Philip Monk
74b0f66850
ames: continue processing memos after %done 2019-11-27 15:13:17 -08:00
Fang
fb67eef417
ethio: support batch requests
Implements +request-batch-rpc-strict.
Only succeeds if all requests in the batch succeed.

Re-implements +request-rpc as a batch with one request.
2019-11-27 23:50:37 +01:00
Philip Monk
7ddd1225e0
hood: link chat-cli on startup 2019-11-27 01:21:16 -08:00
Philip Monk
f035955a36
ames: rename alef -> ames 2019-11-27 00:46:02 -08:00
Liam Fitzgerald
2ef42ba3de language-server: genericise searching gates
genericise searching gates, as we are not always searching against
a [term type]. e.g. chat-cli autocomplete
2019-11-27 18:10:22 +10:00
Philip Monk
2e9abe18ad
drum: restore startup apps 2019-11-26 23:08:42 -08:00
Philip Monk
4a0c5be2ba
Merge remote-tracking branch 'origin/la-convert' into philip/mall-real 2019-11-26 22:56:33 -08:00
Logan Allen
8b63aeb865 chat-store: added in chat-history changes 2019-11-26 12:50:36 -08:00
Philip Monk
b658f11c42
dns: reduce to simpler threads 2019-11-25 21:54:46 -08:00
Matilde Park
be4b479660 soto: amend tab sole-effect json and handler
The behaviour of $tab sole-effects lacked a 'tab' key, so Soto wasn't
catching or writing them to the screen. This commit amends both the
handler and the sole-effect to fix that behaviour.
2019-11-25 19:38:07 -05:00
Philip Monk
4d1457bbaa
Merge remote-tracking branch 'origin/master' into philip/mall-real 2019-11-24 00:01:04 -08:00
Joe Bryan
3741e734cb dill: adds |pack and and friends 2019-11-22 17:24:42 -08:00
Isaac Visintainer
51d61e4d49 static gall: convert soto 2019-11-22 12:57:58 -08:00
Isaac Visintainer
dc3aa348a0 static gall: convert publish 2019-11-22 12:57:58 -08:00
Philip Monk
f8b612d053
ph: add ph-all to run multiple tests 2019-11-22 12:46:30 -08:00
Philip Monk
9d47222139
Merge remote-tracking branch 'origin/mall-testnet' into philip/mall-real 2019-11-21 19:07:28 -08:00
Philip Monk
9f89c8b8bc
drum: fully unlink 2019-11-20 14:26:13 -08:00
Philip Monk
b8903e9a6f
gall: fix ap-kill-down
This broke when %kick was handled by resubscribing on your own ship
because it processed the %kick before the %leave.  For example, `@t`404
at the dojo would put the dojo in an unworkable state.

You want the %leave to be processed first because you can't do a
"resubscribe" in response to that.
2019-11-20 13:24:19 -08:00
Philip Monk
1d1119c1f3
drum: unsubscribe on poke-ack failure 2019-11-20 12:12:33 -08:00
Ted Blackman
39144ee977 drum: fix nest-fail 2019-11-20 01:45:44 -05:00
Ted Blackman
7eeea1f25b drum: add %spider to default apps 2019-11-20 01:36:36 -05:00
Jared Tobin
5258579ee2
Merge branch 'matilde/soto' (#1952)
* origin/matilde/soto:
  soto: style changes
  interface: add soto source code
  drum: Boot with %soto
  arvo: adds soto application
  mar/sole: add %tab conversion

Signed-off-by: Jared Tobin <jared@tlon.io>
2019-11-20 13:15:42 +08:00
Philip Monk
a5412f01de
Merge branch 'alef-testnet-merge' into philip/mall-real 2019-11-19 13:03:07 -08:00
Philip Monk
6a406e6b29
gall: mall -> gall 2019-11-18 20:36:21 -08:00
Philip Monk
9862dccc0e
mall: age -> app 2019-11-18 19:28:59 -08:00
Jared Tobin
053c784de6
Merge branch 'chat-history' (#1948)
* chat-history:
  chat: added temporary chat-two-update mark with new %messages type
  chat: oust correctness fix and js style fix
  chat-store: factored out functions used in both message and messages
  chat: style fixes
  chat: fixes to cli parser and increased page size in hook
  chat-js: updated to support %messages events
  sur: added rw-security to replace chat-security
  chat: add history functionality. optionally request backlog.

Signed-off-by: Jared Tobin <jared@tlon.io>
2019-11-19 10:47:40 +08:00
Philip Monk
7837d51aba
spider: rename thread -> strand, imp -> thread 2019-11-16 04:07:09 -08:00
Liam Fitzgerald
87da55073e language-server: fix cord reverse 2019-11-16 11:48:25 +10:00
Liam Fitzgerald
f299bf9d2c language-server: use modern tisfas syntax 2019-11-16 11:46:17 +10:00
Philip Monk
c1b0bd63e4
spider: don't pass in initial bowl 2019-11-15 17:37:20 -08:00
Logan Allen
8421e236df chat: added temporary chat-two-update mark with new %messages type 2019-11-15 15:27:50 -08:00
Philip Monk
fc28e6e378
ph: make breach-sync pass 2019-11-15 12:46:11 -08:00
Liam Fitzgerald
b0c5b7b0fe language-server: add function signature on hover
Add function signature on hover. Fixes bug around autocomplete
not working properly when the cursor was mid-word.
2019-11-15 11:17:00 +10:00
Matilde Park
8fb13e4f99 soto: style changes
This commit amends the Soto application with style changes
requested during code review, including structuring the mark
conversion as a library.
2019-11-14 20:06:11 -05:00
Philip Monk
9ace7ff590
ph: make breach-hi pass 2019-11-14 16:39:28 -08:00
Philip Monk
4cb821de11
ph: get boot-az working 2019-11-14 13:31:55 -08:00
Logan Allen
dcde20c86c sur: added rw-security to replace chat-security 2019-11-14 10:42:55 -08:00
Logan Allen
9cacb12dbc chat: add history functionality. optionally request backlog. 2019-11-14 10:42:52 -08:00
Matilde Park
86e99c998c drum: Boot with %soto
Adds %soto to default application pool, so it shows up in Landscape
for fresh ships.
2019-11-14 13:40:05 -05:00
Philip Monk
32ea09caf2
mall: remove old hood libraries 2019-11-14 10:39:50 -08:00
Philip Monk
881517c872
mall: fix tests 2019-11-13 20:45:12 -08:00
Philip Monk
adc54531fc
mall: autostart lens 2019-11-13 17:26:29 -08:00
Philip Monk
cd3308d8d9
mall: convert lens 2019-11-13 16:20:24 -08:00
Philip Monk
4a6e98a558
mall, eyre: refactor server apps to be stateless 2019-11-13 00:38:35 -08:00
Philip Monk
1d1e9c0e16
eyre: better userspace libraries 2019-11-12 23:37:38 -08:00
Philip Monk
47e3b260d5
eyre: subscribe to apps for responses
This removes the %http-response special case from gall.  In its place,
we implement a subscription regime with the following steps:

- Agent sends %connect to Eyre
- Eyre pokes agent with %handle-http-response, including unique eyre-id
- Agent passes %start-watching to Eyre with eyre-id and unique app-id
- Eyre subscribes to agent on /http-response/app-id
- Agent produces a %http-response-header fact followed by 0 or more
  %http-response-data facts and possibly a %http-response-cancel fact
- Agent produces a %kick to close the subscription, which Eyre
  interprets as completion of the message.

This works when there is data.  There is currently a bug where if the
response has no data in total (as in the case of a naked 404), no
response will be sent.

This also includes lib/http-handler, which implements a convenient
interface for agents that want to respond immediately with all the data.
This lets them avoid carrying extra state to keep track of pending
requests.

This should really have access to your state and the ability to change
it.  Perhaps a more minimalist design would be better: just keep track
of the requests, then hand it off to +on-watch when eyre is ready to
receive responses.  It's not clear how to pass in the request data in
+on-watch.
2019-11-12 23:37:38 -08:00
Philip Monk
54d55b69e4
mall: fix ph 2019-11-12 21:03:21 -08:00
Philip Monk
1caa30d812
mall: convert eth-watcher to mall/imp 2019-11-11 21:36:32 -08:00
Philip Monk
5c1d68bf44
spider: add process tree 2019-11-09 23:27:07 -08:00
Philip Monk
ab8ac96702
spider: allow arguments and return values 2019-11-09 19:09:02 -08:00
Philip Monk
bcd7c5e82d
Merge branch 'master' into philip/mall-real 2019-11-09 16:47:41 -08:00
Philip Monk
1c8bddfb15
mall: ci 2019-11-08 19:52:18 -08:00
Philip Monk
47f24faaf8
mall: convert chat-cli 2019-11-08 19:32:21 -08:00
Philip Monk
7c4316fce4
mall: refactor gift/sign/task types
+on-agent now takes a +sign:agent:mall, which doesn't include spurious
options.  Similarly, +task:agent:mall is smaller.
2019-11-08 17:35:24 -08:00
Philip Monk
aba0811b1d
mall: add lib/verb 2019-11-08 15:18:29 -08:00
Philip Monk
1688fe82fd
mall: add flag to default-agent to assist with errors 2019-11-08 13:56:35 -08:00
Philip Monk
4ef1278cfa
mall: add lib/skeleton 2019-11-08 13:18:27 -08:00
Philip Monk
43be7737d6
mall: rename agent arms 2019-11-07 00:19:58 -08:00
Jared Tobin
3ec88f9bb1
Merge branch 'goad-gall' (#1915)
* goad-gall:
  updates solid pill
  dill: fixes cursor position during boot
  dill: adds %goad automation
  dill: refactors move production
  goad: adds app to unblock :hood if necessary
  hood: adds |goad-gall generator
  gall: restores "not-running" printf
  gall: adds %goad task force agent rebuilds

Signed-off-by: Jared Tobin <jared@tlon.io>
2019-11-06 17:29:45 +08:00
Jared Tobin
0e6542afd5
Merge branch 'philip/language-server' (#1910)
* philip/language-server:
  language-server: address review comments
  language-server: fix rune typos
  language-server: multiple files and ford
  language-server: namespace libraries
  language-server: cleanup and incremental text sync
  language-server: initial commit

Signed-off-by: Jared Tobin <jared@tlon.io>
2019-11-06 16:12:26 +08:00
Jared Tobin
144445beb1
Merge branch 'invite-app' (#1901)
* origin/invite-app:
  chat-hook: upgrade from old state and perform invitatory creation and subscription
  invite-hook: crash upon invalid invite received
  changed invite peek interface to /:path/:uid
  invite: add comments and clean up
  chat-js: added invite functionality
  chat-hook: added invite functionality
  app: added invite app and mark converters to JSON

Signed-off-by: Jared Tobin <jared@tlon.io>
2019-11-06 15:47:05 +08:00
Philip Monk
65f5b95146
spider: convert dns 2019-11-05 23:28:20 -08:00
Philip Monk
9f0b1f9ae9
language-server: forward port changes to static gall 2019-11-05 20:33:11 -08:00
Philip Monk
545fe25cd2
language-server: address review comments 2019-11-05 20:26:33 -08:00
Philip Monk
7448432707
drum: don't print stack trace on phat reap 2019-11-05 20:05:31 -08:00
Joe Bryan
c26d547625 hood: adds |goad-gall generator 2019-11-05 13:04:27 -08:00
Philip Monk
faf3741b41
mall: convert chat-store 2019-11-05 11:30:58 -08:00
Jared Tobin
3fac197ec1
Merge branch 'eth-watcher-2' (#1895)
* eth-watcher-2: (21 commits)
  eth: move existing chain requests into ethio
  eth-watcher: refactor refresh rate to top of file
  hook: add pool-group-hook for making invite groups
  ethio: add +read-contract for chain state reading
  zuse: add delegated-sending address
  eth: move eth-watcher's request-rpc into ethio lib
  gaze: make compile for latest eth-watcher
  drum: start eth-watcher on boot
  azimuth-tracker: remove deprecated generator
  eth: implement azimuth-tracker using eth-watcher
  eth-watcher: ensure logs always sent oldest-first
  eth-watcher: allow peers to unconfigured watchdogs
  eth-watcher: saner %watch behavior
  eth-watcher: implement %clear poke
  eth-watcher: store logs in state to implement peer
  eth-watcher: move types into /sur file
  eth-watcher: properly tag out-peer-data
  eth-watcher: single update timer loop
  eth-watcher: implement /block peek
  eth: turn azimuth-tracker into eth-watcher
  ...

Signed-off-by: Jared Tobin <jared@tlon.io>
2019-11-05 17:11:19 +08:00
Philip Monk
0e2da1e130
mall: convert lanaguage-server 2019-11-04 23:47:27 -08:00
Philip Monk
189f6cc955
language-server: fix rune typos 2019-11-04 23:46:46 -08:00
Philip Monk
aea2a76363
Merge branch 'philip/language-server' into philip/mall-real 2019-11-04 21:44:17 -08:00
Philip Monk
0638d23840
mall: forward port userspace changes 2019-11-04 21:35:42 -08:00
Philip Monk
82513c27fc
Merge branch 'master' into philip/mall-real 2019-11-04 19:35:24 -08:00
Philip Monk
0713d3d38c
language-server: multiple files and ford
Handle multiple files by keeping a map of text buffers.  Also use the
Ford parser so we can parse ford runes.  At some point we should load in
libraries when that happens so we have the appropriate types.

This corresponds to hoon-language-server 0.1.1
2019-11-04 18:18:36 -08:00
Fang
8c452ef61f
Merge branch 'eth-watcher-2' into pool-group-hook 2019-11-04 20:52:29 +01:00
Fang
5c6c75c7ea
eth: move existing chain requests into ethio
To avoid reimplementing these (on top of ethio) every time. This seems
like a good place to centralize chain request logic going forward.
2019-11-04 18:59:30 +01:00
Philip Monk
8fe859ad49
language-server: namespace libraries 2019-11-03 21:54:04 -08:00
Philip Monk
647c0ddf8b
language-server: cleanup and incremental text sync 2019-11-03 21:46:15 -08:00
Philip Monk
da71dac4ab
language-server: initial commit
A simple language server engine, for use with hoonls.py, which presents
the RPC interface expected by editors.  Features:

- Syntax error detection
- Rune snippets
- Autocomplete
2019-11-03 21:42:35 -08:00
Jared Tobin
988b3a4785
Merge branch 'philip/tab-complete' (#1899)
* philip/tab-complete:
  auto: gain and lose types on ?:
  auto: handle tab in middle of symbol
  auto: support forks
  auto: support autocomplete inside wings
  auto: fix some crashes on strange wet gates
  auto: support multiline tab completion
  auto: don't look in context of non-gold cores
  easy-print: don't crash if type-check crashes
  dojo, drum: change %tab sole-effect to use tanks
  dojo, auto: move insert-magic logic to lib/auto
  dojo, drum: give tab completion as true output
  dojo: add a better function printer
  dojo: add tab completion

Signed-off-by: Jared Tobin <jared@tlon.io>
2019-11-03 22:09:55 +08:00
Ted Blackman
9a02c64b45 Merge branch 'master' into alef-testnet-merge
Untested, has not been run.
Uses master pills for now.  Will need refreshing.
2019-11-02 23:37:01 -04:00
Philip Monk
ec3ab084c7
auto: gain and lose types on ?: 2019-11-01 18:02:20 -07:00
Logan Allen
d7eb005ae8 invite: add comments and clean up 2019-11-01 14:04:50 -07:00
Logan Allen
656f264f96 app: added invite app and mark converters to JSON 2019-11-01 14:04:50 -07:00
Jared Tobin
f30e1d9993
Merge branch 'remove-hall'
* remove-hall:
  apps: remove %hall and %talk

Signed-off-by: Jared Tobin <jared@tlon.io>
2019-11-01 18:11:30 +08:00
Fang
e402cbc550
ethio: add +read-contract for chain state reading 2019-11-01 18:09:50 +08:00
Philip Monk
ce6efe0a6a
auto: handle tab in middle of symbol 2019-11-01 00:18:34 -07:00
Philip Monk
ad4f0c3ea3
auto: support forks 2019-10-31 23:21:10 -07:00
Philip Monk
1fe453ee93
auto: support autocomplete inside wings 2019-10-31 22:43:50 -07:00
Philip Monk
0014d1cf2b
auto: fix some crashes on strange wet gates 2019-10-31 21:37:24 -07:00
Philip Monk
f3626e17e6
auto: support multiline tab completion 2019-10-31 20:54:00 -07:00
Philip Monk
e4a89b072c
auto: don't look in context of non-gold cores 2019-10-31 16:38:47 -07:00
Philip Monk
8e66d84c83
easy-print: don't crash if type-check crashes
also don't render all the types if there's more than 10.
2019-10-31 15:53:43 -07:00
Philip Monk
9487481128
dojo, drum: change %tab sole-effect to use tanks
It should be general-purpose for tab-completing things in other apps,
types are inappropriate.
2019-10-31 15:14:41 -07:00
Philip Monk
ee63e122ea
dojo, auto: move insert-magic logic to lib/auto
This changes the entry-points in lib/auto so that clients never have to
handle magic-spoon.  You can specify either a tape of code with a
position index or a preparsed hoon (presumably you ran +insert-magic
before parsing).
2019-10-31 14:56:54 -07:00
Philip Monk
4482997a16
dojo, drum: give tab completion as true output
This stops slogging the tab completion and intead adds a +sole-effect
for tab completion output.  This is morally correct, and it lets dojo
clients show tab completions how they want.  For example, web dojo could
implement this as a drop-down box.

Another advantage is that this puts the rendering logic in drum, which
knows the width of the terminal.  Thus, we can make sure each match
takes no more than one line by truncating with ellipses.  If there's
only one match and it's already fully typed, then we display the whole
type.
2019-10-31 14:36:14 -07:00
Philip Monk
4d0e77a6b2
dojo: add a better function printer
It's useful to know what a function takes and produces, so this changes the autocomplete type prettyprinter to emphasize those.  This also gives a nice syntax for molds.  Examples:

```
-----
add  {a/@ b/@} -> @
~zod:dojo> add
-----
term  * -> @tas
~zod:dojo> term
-----
sign-transaction  {tx/{nonce/@ud gas-price/@ud gas/@ud to/@ux value/@ud data/@ux chain-id/@ux} pk/@} -> @ux
~zod:dojo> sign-transaction🔑ethereum
-----
wind  {a/(* -> *) b/(* -> *)} -> * -> ?({$give p/*} {$pass p// q/*} {$slip p/*})
~zod:dojo> wind
```
2019-10-31 13:56:20 -07:00
Fang
848805e007
eth: move eth-watcher's request-rpc into ethio lib
Once this is more fully featured, /app/claz could be refactored with it.
2019-10-31 15:54:56 +01:00
Philip Monk
76b917f426
dojo: add tab completion
This is initial support for type-aware tab completion.  When you hit tab, it tries to complete the word you're in the middle of using a face or arm in the subject at that point in the code.  It also shows all possible matches and their associated types.  It's nearly instantaneous.  Notes:

- It advances to the longest common prefix, so if you hit tab on `ab` and the only possible results are `abcde` and `abcdz`, then it'll write `abcd` and print both out (with their types).

- If there are fewer than ten matches, it prints the type along with the face.  Printing types is too slow to use all the time, but with 10 it's essentially instantaneous.

- The match closest in the subject to you (i.e. smallest axis number) is displayed lowest (closest to your focus).

Examples below, where `<TAB>` represents me hitting tab while my cursor is at that position (the line with the `<TAB>` is not preserved in the actual output).

```
~zod:dojo> eth<TAB>
-----
ethereum        #t/<11.qcl {<3.ltb 27.ipf 7.ecf 36.uek 92.bjk 247.ows 51.mvt 126.xjf 41.mac 1.ane $141> <21.yeb 27.ipf 7.ecf 36.uek 92.bjk 247.ows 51.mvt 126.xjf 41.mac 1.ane $141>}>
ethereum-types  #t/<3.ltb 27.ipf 7.ecf 36.uek 92.bjk 247.ows 51.mvt 126.xjf 41.mac 1.ane $141>
~zod:dojo> ethereum
~zod:dojo> |=  zong=@ud  z<TAB>
-----
zing  #t/<1.dqs {* <126.xjf 41.mac 1.ane $141>}>
zap   #t/<1.iot {tub/{p/{p/@ud q/@ud} q/""} <1.rff {daf/@t <247.ows 51.mvt 126.xjf 41.mac 1.ane $141>}>}>
zuse  #t/$309
zong  #t/@ud
~zod:dojo> |=  zong=@ud  zo<TAB>
-----
zong  #t/@ud
~zod:dojo> |=  zong=@ud  zong
~zod:dojo> <TAB>
hoon-version
trel
quip
pole
unit
qual
lone
... about 600 more lines ...
unity
html
zuse
eny
now
our
~zod:dojo>
```

Functionally, this is in a state where I'd be comfortable shipping it.  It doesn't interfere with anything if you don't press tab, and it's perfectly OTA-able.  I do think its output is a little verbose, but that can be tuned over time as people try it and determine what feels good in practice.

Additional notes:

- There are plenty of similar systems for other languages, but my most direct inspiration is Idris's editor tools.  This is implemented for the dojo, but I actually want it in my editor, which is why the meat is all defind in a library.  I've only tested on dojo one-liners, so I don't know the performance on large blocks of code.

- The default type printer isn't great for this use case.  In particular,
	- Cores should not print anything about their context
  - The `#t/` should go away
  - If it looks like a gate, we should print its return value
  - Maybe special handling for molds, but if the above is done, then for example `bone` is  `* -> @ud`.

- The worst part about our wing ordering is that it really screws up tab completion.  You want to do `point.owner-address` instead of `owner-address.point` because that lets you type `point.ow<TAB>`.  I weakly prefer reading it how we do it now, but it's really not great.  You could do an (dojo-specific?) alternate syntax of `point;owner-address`; this is a simple transformation.

- Regardless of the above, this should handle the case where we're in the middle of defining a wing; it doesn't right now.

- When a variable is shadowed, we show both of them.  We should probably show the shadowed one with a `^`.

- We probably shouldn't print out hundreds of results.  Maybe just the closest 50 with ellipses.

- This gets you any face in your subject, regardless of whether its type is reasonable.  We could limit that some by copying the `gol` logic in mint, so that if the pseudo-backward-inference engine happens to know what type it should be, you can filter the tab results according to if they nest in that type.  This would be "strongly type-aware".
2019-10-30 23:19:25 -07:00
Joe Bryan
aba3ea8055 dns: sends notifications directly to %dill (and adds tapp support) 2019-10-30 15:14:54 -07:00
Logan Allen
c660a79332 apps: remove %hall and %talk 2019-10-30 13:52:19 -07:00